C语言读取文件并拼接字符串 - 示例代码及优化
以下是一个示例代码,可以循环读取文件并将其内容拼接到一个字符串中:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
char *filename = 'test.txt';
char *str;
long file_size;
// 打开文件
fp = fopen(filename, 'r');
if (fp == NULL) {
printf('Failed to open file: %s\n', filename);
exit(1);
}
// 获取文件大小
fseek(fp, 0, SEEK_END);
file_size = ftell(fp);
fseek(fp, 0, SEEK_SET);
// 分配字符串内存
str = malloc(file_size + 1);
if (str == NULL) {
printf('Failed to allocate memory.\n');
exit(1);
}
// 读取文件内容到字符串
while (fgets(str, file_size, fp) != NULL) {
// 拼接字符串
// 注意:fgets() 会读取换行符,需要手动去掉
str[file_size - 1] = '\0'; // 去掉换行符
strcat(str, '\n'); // 加上换行符
}
// 关闭文件
fclose(fp);
// 输出字符串
printf('File contents:\n%s', str);
// 释放内存
free(str);
return 0;
}
注意事项:
- 文件必须存在并且可读。
- 代码中使用了动态内存分配,需要在使用完毕后手动释放内存,否则会造成内存泄漏。
- 读取文件内容时,需要注意文件的换行符,否则拼接的字符串可能会出现问题。
原文地址: https://www.cveoy.top/t/topic/ng9n 著作权归作者所有。请勿转载和采集!