第1个回答 推荐于2017-10-03
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);
}
void mingling(char b[])
{ int i=0;
char c,a[10]={0};
while (i!=9&&(c=getchar())!=EOF) /*用CTRL+Z或者CTRL+D结束输入*/
a[i++]=c;
i=3;
if(strcmp(a,b)==0)
printf("\n%d\n",i);
else
printf("error");
}
//---------------------------------------------------------------------------本回答被提问者采纳
第2个回答 2008-12-09
我不知道你下边的程序是怎么运行的…………连编译也过不了……
scanf()函数的返回值不是字符串……
所以第二个程序应该改成
i=3
scanf("%s",a);
if(strcmp(a,b)==0)
…………
还有第一个程序
gets()的确不可以接收回车,但可以接收空格
而且这两个程序都正确……没有错误
第3个回答 2008-12-09
#include <stdio.h>
#include <stdlib.h>
int main()
{
void mingling(char b[]);
char a[]="zhang";
mingling(a);
return 0;
}
void mingling(char b[])
{
int i;
char a[10];
i=3;
scanf("%[^\n]",a);//%[^\n]使输入可以接收空格,scanf的返回值是输入的参数的个数,不是字符串
if(strcmp(a,b)==0)
printf("\n%d\n",i);
else
printf("error");
}
第4个回答 2008-12-09
scanf("%s",a),返回的是个整数呀你拿个整数与b比较不行!
#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");
}
放到前面一样可以符合你要的!只要你输入的是zhang他就会执行相应的函数!
怎么不符合呢?