我读了一个文本文件,效果很好。
std :: string str_buf =“”;FILE * file = fopen(“/ home / pi / log_2019-03-07.txt”,“r”);if(file!= NULL){ 而(真) { char缓冲区[…
size_t wSize = fwrite(&str_buf.data()[offset], sizeof(char), strlen(str_buf.data()) - 1, writefile);
你开始在偏移处写文本 &str_buf.data()[offset] 但你写的是从位置0开始的字符串的长度。你正在写 offset 字节太多了。你应该
&str_buf.data()[offset]
offset
size_t wSize = fwrite(&str_buf.data()[offset], sizeof(char), strlen(str_buf.data()) - offset, writefile);
此外,您不写字符串长度也不写NUL终止符。因此,除非像在您的简单示例中那样,它在文件末端,否则您无法确定要读取多少内容。
最后,最好使用它 str_buf.length() 而不是strlen。它更快,适用于中间有NUL的字符串。
str_buf.length()