fwrite无法写入完整字符串,仅写入8字节问题求助
问题分析与解决
问题根源在于fwrite的第三个参数:你使用了sizeof(b),但b是const char*类型的指针,在64位系统中指针的大小为8字节,这就导致fwrite仅写入了前8个字符,也就是你看到的"Hello, W"。
正确的写法是用strlen(b)获取字符串的实际有效长度:
FILE* f = fopen("file.txt", "w"); const char* b = "Hello, World!\n"; fwrite(b, sizeof(char), strlen(b), f); fclose(f);
额外补充两点注意事项:
strlen不会统计字符串末尾的终止符\0,而文件存储通常不需要这个终止符,所以用它刚好匹配需求- 建议增加文件打开失败的检查,避免后续操作无意义执行:
FILE* f = fopen("file.txt", "w"); if (f == NULL) { perror("Failed to open file"); return 1; } const char* b = "Hello, World!\n"; fwrite(b, sizeof(char), strlen(b), f); fclose(f);
内容的提问来源于stack exchange,提问作者mdfx
相关产品推荐
相关产品推荐

