在做一道海贼oj的C语言题目,我输入n为3
但发现一直少了一次输入机会
后来发现是出现 “吞字符”
#include <stdio.h>
#include <string.h>
int main() {
int n,j;
char x;
char max[100] = " ";
scanf("%d",&n); // 这里的scanf 出现"吞字符" ,可以在%d后面加/n 变成%d/n
// 或者在这里添加一行 getchar();
for(int i=0;i<n;++i,j=0){
char name[100] = " ";
while(scanf("%c",&x)!=EOF){
if(x!='\n') name[j++] = x;
else{
if(strlen(name)>strlen(max)) strcpy(max,name);
break;
}
}
}
printf("%s\n",max);
return 0;
}
“吞字符” 原因分析
为什么 n 为 3,但只能输入两个值 ?
1. 用户输入了什么? 程序实际读取了什么? 输出结果是什么
用户输入
3 // 3'\n'
tom /