c语言:让fgets继续输入,直到我按两次输入?

时间:2010-04-29 05:32:01

标签: c

嗨我想问一下如何修改这个问题的代码:(它只接受一个输入,然后打印出来。我希望它一直继续,直到我按两次输入(\ n)。

#include <stdio.h>

#define MAXLENGTH 1000
int main(void) {
    char string[MAXLENGTH];

    fgets(string, MAXLENGTH, stdin );
    printf("%s\n", string);

    return  0;
}

我对fgets感到困惑(字符串,MAXLENGTH,stdin); line,stdin是什么意思/做什么?

编辑:克里斯,我已经尝试过了:

    #include <stdio.h>

#define MAXLENGTH 1000
int main(void) {
    char string[MAXLENGTH];


    do {
    if (!fgets(string, MAXLENGTH, stdin ))
        break;
    printf("%s", string);
    }
} while (string[0] != '\n');


    return  0;
}

在我按下回车后打印,但我想先输入整个列表,然后在我按两次输入后允许它打印列表。

3 个答案:

答案 0 :(得分:2)

do {
    if (!fgets(string, MAXLENGTH, stdin ))
        break;
    printf("%s", string);
} while (string[0] != '\n');

将继续读取输入并打印它,直到它看到一个空行(连续两次击中)或直到EOF。

stdin指的是程序的标准输入,它是运行它时连接到的任何输入源。如果您只是在命令行运行它而没有额外的shell重定向,那将是键盘。

答案 1 :(得分:2)

试试这个:

#include <stdio.h>
#include <string.h>

#define MAXLENGTH 1000
int main(void) 
{
    char string[MAXLENGTH];

    int i = 0;
    for(;;++i)
    {
        string[i] = getchar();
        if (i > 0 && string[i] == '\n' && string[i-1] == '\n') break;                
    }

    string[i] = 0;

    printf("Print it again:\n%s",string);

    return  0;
}

答案 2 :(得分:1)

如果要在按两次返回键后打印整个输入,可以执行以下操作:

char string[MAXLENGTH];     // to hold a single input line.
char strings[MAXLENGTH]=""; // to hold the entire input lines.
do {

    if (fgets(string, MAXLENGTH, stdin ) == NULL)
        break;
    strcat(strings,string);
} while (string[0] != '\n');
printf("%s", strings);