我编写了以下代码,但它陷入了无限循环。有人可以帮我解决这个话题吗?
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
FILE *fp;
char s[10];
fp=fopen("text1.txt", "w");
if(fp==NULL)
{
printf("Error opening file\n");
exit(1);
}
while(fgets(s, sizeof(s), stdin)!=NULL)//Reads until the NULL character.
fputs(s, fp);//Write to the file pointed by fp..
fclose(fp);
getch();
}
答案 0 :(得分:2)
如果输入输入,请使用 ctrl + z 来终止输入。我在linux上尝试了代码,它运行正常。 ctrl + z 表示Windows上的EOF。
如果您没有输入输入并使用重定向,则代码可以正常工作。
答案 1 :(得分:2)
此程序将按预期运行,直到输入信号“文件结束”。
如果您没有使用输入重定向(例如,将其作为myprogram < somefile.txt
运行),而是使用控制台(键盘)作为输入设备运行,则必须手动发出文件结束信号以使循环结束。
在Linux中,按 Ctrl + D 完成,在Windows中 Ctrl + Z 。