我试图用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 */
}
这段代码的执行应该给我这个对VAR src
= 2和dest
= 18
2::8
,但在文件中我得到这个
2::1818
我不知道你是用“\ 0”的在你的代码做什么。他们在那里有什么?例如与strcat。字符串或者已经有一个空终止字符,或者它没有。如果你试图将另一个\ 0追加到尾部,strcat首先必须在最后找到\ 0,然后再添加另一个?为什么? –
使用strchr查找\ 0与使用strlen完全相同。不是吗? –