fgets - 省略c中的最后一行

时间:2010-03-06 13:10:34

标签: c fgets

基本上我的代码有问题 - 这是作业,所以不要因为显而易见的原因而把它发布在这里。如果这对我来说真的很重要,那么我将不得不因为我如此困难。

我正在阅读2个文本文件,它还有一个分隔符,这些值来自命令行,只是假设这种情况下的分隔符是xx

File a
a
b
c


File b
d
e

Output should be
axxd
bxxe
cxx

问题是我的代码没有正确执行最后一行

我得到

的输出
axxd
bxxe

我希望你们能在我发布我的所有代码时收集我做错的事情,但我的逻辑是按照这个原则运作的;

while not at the end of the file for files a and b
    get a line using fgets from a
    create a character pointer and set it to the first occurrence of \n in the line using strchr
    if the pointer isn't null
        set the pointers value to be the end of line

get the line from b as above
and now write the line from a, the separator and the line from b to file

2 个答案:

答案 0 :(得分:3)

这是您的第一个逻辑问题:while(!feof(a) && !feof(b))

这意味着如果 文件已到达结尾,则即使另一个文件中有更多行,也会停止处理。

答案 1 :(得分:0)

打印最后一行后,您可能不打印换行符?然后它可能根本不会显示在你的屏幕上。请注意,如果原始行有一行而文件的最后一行可能没有,则fgets只在缓冲区中放入换行符。