问题遇到的现象和发生背景
C语言
问题相关代码,请勿粘贴截图
scanf("%d",&n);
for(i=0;getchar(),scanf("%[^\n]",a+i),i<n;i++);
运行结果及报错内容
我的解答思路和尝试过的方法
我试过将getchar去掉变到scanf,前加\n后,但是不行
我想要达到的结果
输入完数据后直接按回车就行
C语言
scanf("%d",&n);
for(i=0;getchar(),scanf("%[^\n]",a+i),i<n;i++);
我试过将getchar去掉变到scanf,前加\n后,但是不行
输入完数据后直接按回车就行
for(i=0;getchar(),scanf("%[^\n]",a+i),i<n;i++);
你这样是每次循环都先执行getchar()和scanf("%[^\n]",a+i) 再判断i<n。
getchar()应该只在scanf("%d",&n);之后执行一次
scanf("%[^\n]",a+i) 要放循环体中,要让先判断i<n再执行scanf("%[^\n]",a+i)
否则最后判断i<n不成立时也会多执行一次scanf("%[^\n]",a+i)
改成这样
#include <stdio.h>
int main()
{
int i,n;
char a[100] = {0};
scanf("%d",&n);
getchar();
for(i=0;i<n;i++) {
scanf("%[^\n]",a+i);
}
a[i] = '\0';
printf("%s", a);
return 0;
}
如有帮助,望采纳!谢谢!