|
|
1
79
此代码有很多错误:
您正在追加一个字符(不是以NUL结尾的字符串!)可以或不可以NUL终止的字符串。这个
只有
我可以想象,根据手册页的描述,如果文件中的每个字符都以NUL结尾,这种情况下,这将是毫无意义的。所以是的,这绝对是一种可怕的虐待
如果您提前知道最大缓冲区大小:
|
|
2
5
是的-你可能会因为你可恶的滥用strcat而被捕! 看看getline(),它一次读取一行数据,但重要的是它可以限制读取的字符数,这样就不会使缓冲区溢出。 您通常会保留一个指向字符串存储的当前端的指针,并将其传递给getline,作为读取下一行的位置。 |
|
|
3
2
如果您使用的是linux系统,那么一旦拥有了文件描述符,就可以使用fstat()获得有关该文件的大量信息 http://linux.die.net/man/2/stat 所以你可能有
这样可以避免查找文件的开头和结尾。 |
|
|
4
1
看见
this article from JoelOnSoftware
为什么你不想使用
看看 fread 另一种选择。在读取字节或字符时,将其与1一起用作大小。 |
|
|
5
1
你为什么不直接使用你拥有的字符数组呢?这应该做到:
|
|
|
6
1
未经测试,但应能正常工作。。是的,它可以更好地用fread实现,我将把它作为练习留给读者。
|
|
|
7
0
|
|
|
8
-1
你考虑过mmap()吗?您可以直接读取文件,就好像它已经在内存中一样。 |