c++fopen错误

2024-12-12 20:58:28
推荐回答(3个)
回答1:

对于你的第一段程序报错是因为有一处写错了 m_RxFileName = "c:\1.txt";
应写为m_RxFileName = "c:\\1.txt"; “\”本身是转义符,所以你要写出反斜杠要用“\\”,这样程序运行就没有问题了,或者像你第二段代码那么写地址也行。

至于第二个问题char* buffer[10]相当于你声明了10个char*的内存空间,及指针数组,还有一处楼主需要注意fwrite(buffer, len, 1, fp) 建议楼主写成fwrite(buffer,sizeof(char),len, fp);

size_t fwrite(
const void *buffer,
size_t size,
size_t count,
FILE *stream
);

buffer
Pointer to data to be written.
size
Item size in bytes.
count
Maximum number of items to be written.
stream
Pointer to FILE structure.

从这个可以看出第二个参数表示的是1个项目的尺寸,你这里的项目类型是char,用sizeof(char)可以得到一个char类型变量的尺寸,第三个参数是要写入几个成员,从你的程序里可以看出想写入10个。

回答2:

fwrite 用于2进制文件,用"b"打开:
fp = fopen(m_RxFileName, "a+b");

char buffer[10] = "fdddd"; 字符数组
char *buff="fdddd"; 也可以

char* buffer[10] -- 字符指针数组。不行。

回答3:

char* buffer[10] = {"fdddd"};
这个是指针数组,不是字符数组;
另外指针和数组用fwrite函数都是没问题的 ,两个全身是用来存放字符串首地址的