将一个文件写入另一个文件会产生不正确的结果

时间:2015-10-17 23:56:33

标签: c

程序以读取模式打开文件。然后它创建第二个文件,将第一个文件的内容写入第二个文件并删除第一个文件。它通过将第二个文件重命名为原始名称来完成。

这是我得到的输出。

User:~ ./main

Before
M1
M2
M3
M4

After
1
M2
M4
ÿ User:~

输出应该与第一行的读取相同,因为这是我要删除的行。

这是复制字符的代码部分。

ch = getc(File1);
while(ch != EOF);
{
    ch = getc(File1);

    if (ch == '\n')
        ln++;
    if (ln != LineToDelete)
    {
        putc(ch, File2);
    }
}

Here is The Full Code On Pastebin

1 个答案:

答案 0 :(得分:0)

我看到三个问题:

  1. 你丢弃了你的第一个输入字符,因为你在进入循环之前读了一个字符,然后在输入后立即读取另一个字符。
  2. 您尚未初始化ln。看来你很幸运,它已经0,所以你最终省略了“M3”而不是“M2”。但是,你在这里处理未定义的行为;任何事情都可能发生。
  3. 您正在打印出EOF角色。
  4. 尝试这样的事情:

    ln = 1;
    while (EOF != (ch = getc(File1))) {
        if ('\n' == ch)
            ++ln;
        if (LineToDelete != ln)
            putc(ch, File2);
    }