程序以读取模式打开文件。然后它创建第二个文件,将第一个文件的内容写入第二个文件并删除第一个文件。它通过将第二个文件重命名为原始名称来完成。
这是我得到的输出。
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);
}
}
答案 0 :(得分:0)
我看到三个问题:
ln
。看来你很幸运,它已经0
,所以你最终省略了“M3”而不是“M2”。但是,你在这里处理未定义的行为;任何事情都可能发生。尝试这样的事情:
ln = 1;
while (EOF != (ch = getc(File1))) {
if ('\n' == ch)
++ln;
if (LineToDelete != ln)
putc(ch, File2);
}