我正在将用户输入(字符串)写入文件。但是我希望在用户按Enter键而不输入任何字符串时结束程序。 举个例子 输入:
你好,怎么样 你呢!结束该计划。
我试图用这种方式做到这一点。但是当用户什么都不输入时它就不会停止。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char buffer[1000];
char sent[1000];
FILE* ifp = fopen("text.txt", "w");
while (sscanf(buffer,"%s",sent) == 1) {
fprintf(ifp,"%s",buffer);
}
fclose(ifp);
return 0;
}
答案 0 :(得分:2)
在您的代码中:
while (sscanf(buffer,"%s",sent) == 1) {
但无处填写buffer
中的任何内容
正如David Collins所建议的那样,对用户fgets()
而不是sscanf()
更好。你可以这样做:
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
int main() {
char input[LINE_MAX];
FILE *ifp = fopen("text.txt", "w");
if (ifp == NULL) {
perror("fopen");
exit(EXIT_FAILURE);
}
while (fgets(input, LINE_MAX, stdin) != NULL) {
if (input[0] == '\n')
break;
fprintf (ifp, "%s", input);
}
fclose (ifp);
return 0;
}
答案 1 :(得分:0)
尝试通过以下方式替换您的代码:
char *buffer;
if ((buffer = malloc(sizeof(char) * 1000)) == NULL)
exit(EXIT_FAILURE);
memset(buffer, 0, 1000);
while (read(0, buffer, 1000) != 0) {
if (strcmp(buffer, "\n") == 0)
break;
fprintf(ifp,"%s",buffer);
memset(buffer, 0, 1000);
}
警告用户他不能写超过1000个字符的消息