Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-fprintf在带有递增计数器的while循环中不打印到文件_C_Eclipse_File - Fatal编程技术网

C-fprintf在带有递增计数器的while循环中不打印到文件

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)

我是一个使用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) {
        fprintf(fout, "\n");
        i = 0;
    }
}
如果我写入控制台而不是文件,则此代码可以工作。但是,当我如图所示运行它以便它写入输出文件时,文件中没有写入任何内容。如果不增加i,则将word打印到文件中不会出现问题

我已经在递增后直接将Iword的值打印到控制台,似乎我被正确重置了。文件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