c-使用带有char*的fwrite



如何使用fwrite到带有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(吗?还是不正确?任何建议都将不胜感激,谢谢。

这是fwrite的第一个错误调用。

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

它应该像一样编写

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

也就是说,不包括其终止零字符的字符串文字"some string"被写入文件中。

关于这次呼叫

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

则在文件fp.中写入一个字符CCD_ 3

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

函数的声明方式类似

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

并根据C标准(7.21.8.2转发功能(

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

这里的其他答案和注释会告诉您发布的代码有什么问题,但更好的解决方案是使用fputs,它专门设计用于写出以nul结尾的字符串:

const char* c = "some string";
FILE *fp = fopen("file.txt", "ab");
fputs (c, fp);
fputs ("n", fp);
fclose(fp);

相关内容

  • 没有找到相关文章

最新更新