呀,郁闷了!这个switch怎么用啊!各位大哥帮忙看看!
各位大哥帮帮忙啊!这里的问题已经有2天没解决出来!实在没办法才到论坛问下!谢谢各位了!问题如下:
#include"stdio.h"
#include"malloc.h"
#define E 欢迎您的到来!
void main()
{
char *shuru,shuru2,str[8],*a="进入",*b="退出"; 这里我一开始没有str数组!以至于后来的输入不没解决的办法,就使用了一个数组,然后使指针指向它……不知道我这里这样处理对不对!(请看@这里)
printf("%s\t%s\n",a,b);
shuru=str;
scanf("%s",shuru); @ 就是这里!还有比这样高效的吗?
switch(*shuru) 我问的问题,就在这里,这里使用switch,判断*shuru……
{
case '进入':printf("调用进入软件的函数");break; //*调用进入软件的函数*//
case '*b':printf("再见");break; //*这里需要加入goto命令!*//
default:printf("您输入错误");break;
}
}
case '进入':printf("调用进入软件…………
这里我一开始时是“case '*a':printf……”的!能编译出来,可是无论输入什么都出现“您输入错误”
我把*a改为a,然后在编译(能编译出来),然后输入a,竟然能输入“调用进入软件的函数”……
这里我搞了几天了,不知道怎么解决才能输入“进入”,然后才在“case '进入':printf("调用进入软件的……”这里调用以后写好的函数……各位大哥帮帮忙啊!谢谢了!
2、shuru=str; shuru指向数组str;明确 *shuru指的是什么?也必须明确汉字在机内存储方式又是怎样?
printf("%d",*shuru);可查看;
————————————--
case -67:
case -51: [code]/*******************************************************************************
作个字母的,谨作参考——主要是对DOS下输入汉字或者说汉字的ASC码不太
了解。
程序拙劣,还望大家指教。谢谢。
*******************************************************************************/
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[10];
char jinru[6]="jinru";
char tuichu[7]="tuichu";
int i,j=0;
while(j!= 1 && j!= 2 )
{
printf("请输入:“jinru”或者“tuichu”\n");
gets(a);
for(i=0;i<strlen(a)&&a[0]=='j';i++)
{
if(jinru[i]==a[i]&&strlen(jinru)==strlen(a)) j=1;
else {j=0; break;}
}
for(i=0;i<strlen(a)&&a[0]=='t';i++)
{
if(tuichu[i]==a[i]&&strlen(tuichu)==strlen(a)) j=2;
else {j=0; break; }
}
switch(j)
{
case 1: printf("调用进入软件的函数!\n");
break;
case 2: printf("再见\n");
break;
default: printf("您输入错误\n");
}
}
getch();
}
[/code]
[[it] 本帖最后由 广陵绝唱 于 2008-6-19 09:24 编辑 [/it]] strcmp吧。swtich是不可能的。
C的switch功能很弱的。 #include"stdio.h"
#include"malloc.h"
#define E 欢迎您的到来!
void main()
{
char *shuru,shuru2,str[8],*a="进入",*b="退出";
printf("%s\t%s\n",a,b);
shuru=str;
scanf("%s",shuru);
switch(*shuru)
{
case '*a':printf("调用进入软件的函数");break; //*调用进入软件的函数*//
case '*b':printf("再见");break; //*这里需要加入goto命令!*//
default:printf("您输入错误");break;
}
}
啊,我的问题是不是出在DOS下输入中文的没处理好?
switch这里没处理好是吧!我在修改下……谢谢……
回2楼的:
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[10];
char jinru[6]="jinru";
char tuichu[7]="tuichu";
int i,j=0;
while(j!= 1 && j!= 2 )
{
printf("请输入:“jinru”或者“tuichu”\n");
gets(a);
for(i=0;i<strlen(a)&&a[0]=='j';i++) //这里,strlen(a)那里来的啊?啥意思?
{
if(jinru[i]==a[i]&&strlen(jinru)==strlen(a)) j=1;
else {j=0; break;}
}
…………………………………… 晕,怎么回事,帖沉了!大家帮帮忙啊! '*a'有这种用法么? ……我只是想和*a对比,然后在选择输出的……不知道怎么办?我这个程序是不是在DOS下中文不行,程序如果用英文就OK呢?! 恩,switch是不好用,只能用来切换基本数据类型,连类都不支持 用连续的if吧……
switch本来就是对连续if的底层优化而已,说到底还是if链功能比较强大…… #include"stdio.h"
#include"malloc.h"
#define E 欢迎您的到来!
void main()
{
char *shuru,shuru2,str[8],*a="进入",*b="退出";
printf("%s\t%s\n",a,b);
shuru=str;
scanf("%s",shuru);
if(shuru=*a) //可能写错了……
printf("调用进入软件的函数"); //*调用进入软件的函数*//
else
if(shuru=*b)
printf("再见"); //*这里需要加入goto命令!*//
else
default:printf("您输入错误"); }
}
不知道这样对不对? 哎无语了……
if(!strcmp(shuru,a)).... if(shuru=*a) //可能写错了……
我不想打击你,只是……没错,你的确写错了
不能用“=”来判断两个字符串是否相等。要用strcmp()函数来判断。
如“if(!strcmp(shuru, a))printf("相等!"); else printf("不相等!!");” 我以前用惯了VB,刚开始学C的时候也犯过这个错误[em01] 因为在VB里的确可以用等号来判断两个字符串……不过我还是觉得用函数来判断更“标准”,因为在VB里的字符串的概念定义得很“模糊”,VB真是烂啊 模糊?不模糊啊?只不过VB的类型转换比较复杂而已。
其实VB如果学精了也是很厉害的~~~~
回复 14# flyue 的帖子
呵呵,不好意思,应该是==吧!(!strcmp(shuru,a)!必须加string.h头文件吧!了解了!
问下,如果是不同类型的,不知道能不能比较?
比如,shuru是个INT,*a,不知道这样还能不能比较? 再打击你一下:判断char型字符串,用“==”也不行!!!
你还是老老实实地用strcmp或strncmp来判断吧
(我说话很损么?5555555555[em04] )
[[it] 本帖最后由 flyue 于 2008-6-20 17:02 编辑 [/it]] 呵呵,谢谢LS的了!虽然说话有点损,不过还是学到东西了!今天晚上回家实践一下!
结论:12和17楼正解!知道C语言中switch功能不是很行,在确定这一类时还是使用strcmp比较不错!
又学到东西了!先实践下,如果有问题在来请教!
谢谢给本帖回复帖子的所有朋友!非常感谢! 难道flyue说话不损么?? 还不都是向你学的?
页:
[1]
2
