求解释
char str[40][20];
int n,i,j,x=0,y=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",str[i]);/*gets(str[i])与scanf("%s",str[i])*/
用scanf("%s",str[i])可以输入n个,而gets(str[i])只能输n-1个?
为什么呐?
[解决办法]
这是因为scanf("%d",&n);执行完后,还有一个回车符在缓冲区中!
而如果用gets输入的话,第一次会把缓冲区的那个回车符当做字符读进去,也就是说第一次读到的其实是一个回车符!
而scanf("%s",str[i]);不会!
[解决办法]
scanf("%d",&n);
输入数字之后的回车,被第一个gets读取
[解决办法]
你的意思是gets得到的字符串打印出来比scanf得到的少一个字符?
gets时,最后有一个:a null character ('\0')
[解决办法]
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
gets(str[i]);
[解决办法]
第一个scanf("%d",&n);
输出有个回车, 所以用gets得到的第一个是空串。
改为scanf("%d\n",&n);即可