C \导致问题的文件中EOF前的n个字符

C \导致问题的文件中EOF前的n个字符,c,newline,eof,C,Newline,Eof,我已手动(即不是通过我的应用程序)将一些数据写入文件 我的代码是逐字符读取数据并将它们存储在不同的数组中,但是当我插入条件EOF时,我的程序会被卡住 经过一些调查,我发现在EOF之前的文件中有三到四个\n字符。我没有插入它们。我不明白为什么它们会出现在我的文件中。要删除那些讨厌的额外字符吗?首先,查看文件末尾有多少个: od -c <filename> | tail od-c | tail 然后,删除任何你不喜欢的字符。如果是3: truncate -s -3 <filen

我已手动(即不是通过我的应用程序)将一些数据写入文件

我的代码是逐字符读取数据并将它们存储在不同的数组中,但是当我插入条件EOF时,我的程序会被卡住


经过一些调查,我发现在EOF之前的文件中有三到四个
\n
字符。我没有插入它们。我不明白为什么它们会出现在我的文件中。

要删除那些讨厌的额外字符吗?首先,查看文件末尾有多少个:

od -c <filename> | tail
od-c | tail
然后,删除任何你不喜欢的字符。如果是3:

truncate -s -3 <filename>
truncate-s-3
但总的来说,如果是我,我会将程序更改为丢弃不需要的换行符,除非根据输入文件格式规范它们确实无效

  • 在每个文本编辑器中,在文件末尾添加额外的换行是非常容易的。您必须将光标四处移动才能看到它们。在编辑器中打开文件,查看导航到末尾时发生的情况,您将看到额外的换行符

  • 一般来说,没有EOF字符这样的东西。Windows在某些情况下将control-Z视为EOF。也许您所说的是来自某个API的返回值,该值指示它已到达文件的末尾


  • 您使用什么编辑器编辑数据?如果您需要此级别的控制(如无结尾字符),最好使用十六进制编辑器(如bvi),而不是普通的文本编辑器。您缺少一个
    在代码的第42行。先生,有没有办法使用c编程删除这些字符?当然,只需一次读取一个字符,直到找到您不喜欢的字符,然后调用c函数
    ftruncate()
    在文件描述符上传递您所读取的喜欢的字节数。谢谢,先生,但是是否有一个可以使用c语言删除它们的方法