c语言中如何输入一段字符串然后执行某程序?

来源:百度知道 编辑:UC知道 时间:2024/06/03 01:39:07
一下程序运行在turbo c2.0中:
#include"stdio.h"
main()
{ void mingling(char b[]);
char a[]="zhang";
mingling(a);
}
void mingling(char b[])
{ int i;
char a[10];
i=3;
if(strcmp(gets(a),b)==0)
printf("\n%d\n",i);
else
printf("error");
}
我的想法是:输入一段字符串,然后系统判断是否符合要求,符合就执行某条程序,以上是我写的,但用gets命令不能输入空格和回车,所以我改成:#include"stdio.h"
main()
{ void mingling(char b[]);
char a[]="zhang";
mingling(a);
}
void mingling(char b[])
{ int i;
char a[10];
i=3;
if(strcmp(scanf("%s",a),b)==0)
printf("\n%d\n",i);
else
printf("error");
}
但运行后输入zhang显示的确实error,请问这是怎么回事?
有什么其他办法吗?我是在turbo c2.0中运行的。
可是我的想法是只要输入zhang字符串就执行某个函数,
把scanf("%s",a); 放到前面就不符合我的意思了!!!

scanf("%s",a)

它的返回值并不是a的地址(也就是说不是字符串a),而是成功读取的变量个数,而且这个scanf()也不能将回车读取到a中,应该将scanf()放在strcmp()外面,另外,用到了strcmp()就要包含string.h文件:

//---------------------------------------------------------------------------
#include"stdio.h"
#include<string.h>
main()
{ void mingling(char b[]);
char a[]="zhang";
mingling(a);
}
void mingling(char b[])
{ int i;
char a[10];
i=3;
scanf("%s",a);
if(strcmp(a,b)==0)
printf("\n%d\n",i);
else
printf("error");
}
//---------------------------------------------------------------------------

如果想读取回车,就要用循环读取每个字符,例如:

//---------------------------------------------------------------------------
#include"stdio.h"
#include <string.h>
main()
{ void mingling(char b[]);
char a[]="zhang";
mingling(a);
}
v