每当执行代码时,for循环内的内容第一次不执行,即当i = 0时。但是循环在i = 0之后执行,即,对于i = 1,2,3,... n-1。任何人都可以解释这里的错误吗?
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
char string[30][100];
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++){
gets(string[i]);
printf("%s\n",string[i]);
}
getch();
return (EXIT_SUCCESS);
}
答案 0 :(得分:0)
你可以尝试在scanf之后留一个空格,这样系统会在那里暂停而不是自动递增,原因是在你输入n值之后,没有系统暂停和循环中的一个i值是自动视为系统输入:
scanf("%d ", &n);
或使循环从0到等于n仍然会跳过一个数字,但同时加1只是为了让循环等于输入“n”你给
for(i=0;i<=n;i++)
请记住,第一个选项更明智,因为您可能还需要在程序的其他部分使用“n”。
答案 1 :(得分:-1)
for(i=0;i<n;i++)
{
fflush(stdin); //Clears the buffer.insert this here.
gets(string[i]);
printf("%s\n",string[i]);
}
执行scanf("%d",&n);
后,您将离开'\n'
(当您在末尾按Enter键时)缓冲区中的字符。在执行任何其他输入操作之前应该清除它。fflush(stdin)
将清除键盘缓冲区。还有很多其他方法可以做到。但是对于初学者来说,使用fflush(stdin)
很容易。