gpt4 book ai didi

c - 添加/附加文本到文件中的行末尾

转载 作者:行者123 更新时间:2023-11-30 20:37:59 25 4
gpt4 key购买 nike

所以我尝试将文本添加到行尾。现在它把它很好地添加到开头,但我不知道如何将它添加到结尾。

因此,此处的代码从一个文件中获取内容,并将其添加到临时文件中,然后将其与添加的文本一起写回原始文件。然而现在它在行的开头添加文本,我需要它在每行的末尾。

我还想知道是否有一种方法可以将文本附加到每行的末尾,而不将所有内容复制到临时文件,然后将输出显示到标准输出?

int add_text_end(FILE *fileContents) 
{

FILE *tmp = tmpfile();
char *p;
FILE *fp;
char line[LINESIZE];

if ((fileContents = fopen("fileContents.txt", "r")) == 0)
{
perror("fopen");
return 1;
}
/* Puts contents of file into temp file */
fp = fopen("fileContents.txt", "r");
while((p = fgets(line, LINESIZE, fp)) != NULL)
{
fputs(line, tmp);
}
fclose(fp);

rewind(tmp);
/* Reopen file to write to it */
fopen("fileContents.txt", "w");
while ((p = fgets(line, LINESIZE, tmp)) != NULL)
{
line[strlen(line)-1] = '\0'; /* Clears away new line*/
sprintf(line, "%s %s", line, "test");
fputs(line, fp);
}
fclose(fp);
fclose(tmp);
return 0;

}

最佳答案

有一个更好的方法来做到这一点,而不会以错误的方式使用 sprintf 导致未定义的行为(你不能让目标缓冲区与 sprintf 作为参数读取的缓冲区相同) - 将 while block 更改为以下:

while ((p = fgets(line, LINESIZE, tmp)) != NULL)
{
line[strlen(line)-1] = '\0'; /* Clears away new line*/
fprintf(fp, "%s %s\n", line, "test");
}

如果文件有 \r\n结尾,然后用这个代替:

while ((p = fgets(line, LINESIZE, tmp)) != NULL)
{
char *r;
if ((r = strchr(line, '\r')) != NULL)
*r = '\0'; /* Clears carriage return */
fprintf(fp, "%s %s\r\n", line, "test");
}

确保#include <string.h>如果您收到有关 strchr() 的警告没有被宣布。

关于c - 添加/附加文本到文件中的行末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31083536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com