【发布时间】:2021-09-22 22:34:57
【问题描述】:
如何使用 fwrite 写入带有 char* 的文件?如果我想在文件末尾附加一个 char* 并在后面加上一个换行符,这样的事情是否正确?如果你有一个像这样的变量:
char* c = "some string";
会是:
FILE *fp = fopen("file.txt", "ab");
fwrite(c, sizeof(char*), sizeof(c), fp);
fwrite("\n", sizeof(char), 1, fp);
close(fp);
我对第二个 fwrite 语句有点困惑。是 sizeof(char*) 还是 sizeof(char)?我也应该有 sizeof(c) 还是不正确?任何建议将不胜感激,谢谢。
【问题讨论】:
-
sizeof(char*)是错误的,它返回指针本身的大小,而不是它指向的大小,你可能想要strlen(c)那里。 -
我不确定您是否理解指针、数组和字符串之间的区别。所以这里有一个简短的说明:
fwrite不输出char *。它输出char的数组。char *的目的是告知该数组存储在内存中的哪个位置。或者更准确地说,它保存了该数组中第一个char的地址。需要注意的是,char *只知道数组的位置。它不知道数组有多大,或者数组中有多少元素被“使用”了。
标签: c pointers char c-strings fwrite