微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 fwrite 与 char* 一起使用

如何解决将 fwrite 与 char* 一起使用

如何使用 fwrite 写入带有 char* 的文件?如果我想在文件末尾附加一个 char* 并在后面加上一个换行符,这样的事情是否正确?如果你有一个像这样的变量:

print(df)

   value_1  Value_2
0       10       20

会不会是:

char* c = "some string";

我对第二个 fwrite 语句有点困惑。是 sizeof(char*) 还是 sizeof(char)?我也应该有 sizeof(c) 还是不正确?任何建议将不胜感激,谢谢。

解决方法

第一次调用 fwrite 是错误的。

fwrite(c,sizeof(char*),sizeof(c),fp);

应该写成例如

fwrite(c,sizeof( char ),strlen( c ),fp);

即字符串文字 "some string" 不包括其终止零字符写入文件。

至于这个电话

fwrite("\n",sizeof(char),1,fp);

然后在文件 fp 中写入一个字符 '\n'

注意:字符串文字 "\n" 在内部表示为两个元素 { '\n','\0' } 的字符数组。

函数声明如下

size_t fwrite(const void * restrict ptr,size_t size,size_t nmemb,FILE * restrict stream);

并根据 C 标准(7.21.8.2 fwrite 函数)

2 fwrite 函数从 ptr 指向的数组中写入到 大小由 size 指定的 nmemb 元素,指向指向的流 到流。对于每个对象,都会对 fputc 进行 size 调用 函数,从无符号字符数组中获取值(按顺序) 完全覆盖对象。文件位置指示符 流(如果已定义)按字符数前进 成功写入。如果发生错误,则结果值 流的文件位置指示符不确定。

,

此处的其他答案和评论会告诉您您发布的代码有什么问题,但更好的解决方案是使用 fputs,它专门用于写出以空字符结尾的字符串:

const char* c = "some string";

FILE *fp = fopen("file.txt","ab");
fputs (c,fp);
fputs ("\n",fp);
fclose(fp);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。