int main(){
    char str[10][50],temp[50];
    int lim,i,j;
    printf("Enter lim: ");
    scanf("%d",&lim);
    for(i=0;i<lim;++i){
        printf("Enter string[%d]: ",i+1);
        gets(str[i]);
    }

在这里,无法读取str [0](输入字符串[1]:)。读取从“输入字符串[2]:”(str [1])开始。

但是,如果不是lim,而是将整数传递给循环,如下所示,则程序将正确执行。这种情况可能是什么原因?
int main(){
    char str[10][50],temp[50];
    int lim,i,j;
    for(i=0;i<5;++i){
        printf("Enter string: ");
        gets(str[i]);

    }

最佳答案

您输入的scanf()在输入流中留下了换行符,它将输入第一个gets()

在这里寻求帮助:
http://sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html
How to read / parse input in C? The FAQ

此外,您也不想再使用gets()
Why is the gets function so dangerous that it should not be used?

07-28 02:54
查看更多