C-fprintf在带有递增计数器的while循环中不打印到文件
我是一个使用Eclipse的C初学者,我正在尝试读取2个文件并编写它,以便每行有4个单词。这段代码属于一个函数,我在两个不同的文件上调用它。我已经打开和关闭了输入文件fin和输出文件fout。两个文件都存在C-fprintf在带有递增计数器的while循环中不打印到文件,c,eclipse,file,C,Eclipse,File,我是一个使用Eclipse的C初学者,我正在尝试读取2个文件并编写它,以便每行有4个单词。这段代码属于一个函数,我在两个不同的文件上调用它。我已经打开和关闭了输入文件fin和输出文件fout。两个文件都存在 char word[15]; int i = 0; while (fscanf(fin, "%s", word) != EOF) { fprintf(fout, "%s ", word); i++; if (i > 3)
char word[15];
int i = 0;
while (fscanf(fin, "%s", word) != EOF) {
fprintf(fout, "%s ", word);
i++;
if (i > 3) {
fprintf(fout, "\n");
i = 0;
}
}
如果我写入控制台而不是文件,则此代码可以工作。但是,当我如图所示运行它以便它写入输出文件时,文件中没有写入任何内容。如果不增加i,则将word打印到文件中不会出现问题
我已经在递增后直接将I和word的值打印到控制台,似乎我被正确重置了。文件1似乎已被完全读取并写入控制台,但未向输出文件写入任何内容。对于文件2,代码将所有内容正确地打印到控制台,直到碰到逗号为止,并且没有任何内容写入输出。删除逗号后,文件1中的几行将写入文件,文件2将打印,但几乎所有单词都缺少字母
这里怎么了?我不确定是否存在本地问题,因为这段代码在几个小时前就工作了。谢谢。问题已解决,文件中的单词长度超过14个字符,无法正确放入我的字符串变量。处理完后是否在
fout
上调用fclose
?应使用版本控制。你说它几个小时前还在工作。您可以查看此后所做的更改,也可以恢复到工作副本。while(fscanf(…)!=EOF)
应该是while(fscanf(…)==1)
。和char-word[15]代码>似乎有风险。有超过14个字母的单词。我会慷慨地使用char-word[100]代码>在C代码中可能发生的最糟糕的事情是写入超过数组结尾的内容,因此您不应该冒这个风险。@dbush Yes,直接在这个代码之后block@FiddlingBits谢谢,我将设置Github