gpt4 book ai didi

c - 两次写入文件的缓冲区

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:20 25 4
gpt4 key购买 nike

我正在尝试使用 C 将一些数据保存在一个简单的文本文件中。问题是当我将缓冲区写入文件时,它被写入了两次。我不知道为什么。我尝试使用 fwrite 和 fputs;同样的问题,欢迎任何帮助。

void addEdge(graph_t *graph, int src, int dest)
{
FILE *f = fopen("C:\\graph.txt", "a");
if (f == NULL)
{
printf("Error opening file!\n");
exit(1);
}
char *c1 =malloc(8* sizeof(char *)),c2[2]="\0";
itoa(src, c1, 10);
itoa(dest, c2, 10);
/* print some text */
char text[2] = "::";
strcat(c1,text);
printf("c1 before %s \n",c1);
strcat(c2,"\0");
strcat(c1,c2);
printf("c1 after %s ++++++++ c2 %s \n",c1,c2);

//fseek(f,0,SEEK_END);
//fprintf(f, "%s \n", c1);
///fputs(c1,f);
char* pos;
pos = strchr(c1, '\0');
int index = (int)(pos - c1);
fwrite (c1 , sizeof(char), index , f);
fclose(f);
/**************** some other stuff */
}

这段代码的执行应该给我这个 for var src = 2 and dest = 18

2::8

但是在文件中我得到了这个

2::1818

最佳答案

模式为“a”的 fopen 表示追加。这意味着如果您的文件包含任何以前的数据,这些数据将保留并且您写入的任何内容都将附加到末尾。你确定这不是你的问题吗?尝试使用“w”替换旧内容。

关于c - 两次写入文件的缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24966042/

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