嗨我想问一下如何修改这个问题的代码:(它只接受一个输入,然后打印出来。我希望它一直继续,直到我按两次输入(\ 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;
}
在我按下回车后打印,但我想先输入整个列表,然后在我按两次输入后允许它打印列表。
答案 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);