我把scanf("%s",str);getchar();改成gets(str)之后 ,程序就能正常运行。为什么?如果要用scanf()函数 那么应该怎么改才能正常运行。这个代码可以正常编译 但是不能正常运行。 为啥? 有人可以解答吗 谢谢你们
俺输入了 i love china!
然后他就没反应 然后退出了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fp;
char str[100];
int i=0;
if((fp=fopen("b1","w"))==NULL)
{
printf("error!");
exit(0);
}
printf("Please input a string :\n");
gets(str);
while(str[i]!='!')
{
if(str[i]<='z'&&str[i]>='a')
str[i]= str[i]-32;
fputc(str[i],fp);
i++;
}
fclose(fp);
fopen("b1","r");
fgets(str,strlen(str)+1,fp);
printf("%s\n",str);
fclose(fp);
return 0;
}
scanf
适合解析“已知格式”的字符串。以输入字符串
i love china!
为例scanf("%s", str)
出错,因为只取了空格前的i
。scanf("%99c", str)
可以,str
变量存储了整个字符串。scanf("%9s %9s %9s", str, str+10, str+20)
可以参考
https://linux.die.net/man/3/s...