我将用户名和推文存储在以下格式的文件中:
用户名1:消息1:消息2:...:消息N
用户名2:消息1:消息2:...:消息N
...
用户名N:消息1:消息2:...:消息N
如果文件中有一行用户名 == 附加了新消息的用户名,我想将 :newMessage 附加到上面格式的行中。
我如何使用 C 来做到这一点(如果重要的话可以使用 cygwin)?这是我编写的代码块,但我遇到了问题。
while(fgets(line, MAXBUFF, fp) != NULL){ // get each line of file
if (strncmp(line, tweetUsr, strlen(tweetUsr)) == 0){
usrFound = 1;
fprintf(filePointer, ":");
fprintf(filePointer, tweet);
break;
}
memset(&line[0], 0, sizeof(line)); //reset line array
}
我期望发生的情况是将消息附加到行尾,因为 filePointer 应该指向当前行的末尾,但实际发生的情况是消息被附加到文件的末尾.
我在 fopen 中使用 r+ 模式尝试了这一点。我必须做什么才能附加到当前行而不是文件末尾?
最佳答案
您无法在文件中间插入数据。如果您尝试写入,您将覆盖已经存在的数据。
如果您想这样做,您需要:
fseek
到您要写入的位置fread
从该点到文件末尾写入缓冲区fwrite
您要插入的内容fwrite
您读出的缓冲区
关于c - 在 C 中,如何附加到文件行而不是文件末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15605992/