用C语言编写一个从文本文件中删除空行的函数
时间: 2024-09-27 18:02:42 浏览: 51
在C语言中,要编写一个从文本文件中删除空行的函数,首先需要读取文件内容,然后遍历字符串数组或动态分配的内存,检查每一行是否为空,非空行则保留。这里是一个简化版的函数,使用`fgets()`函数来逐行读取文件并检查:
```c
#include <stdio.h>
#include <stdlib.h>
void remove_empty_lines(char **lines, int *line_count) {
// 新建一个临时数组来存储非空行
int new_line_count = 0;
char **new_lines = malloc(new_line_count * sizeof(char *));
for(int i = 0; i < *line_count; i++) {
char *current_line = lines[i];
// 检查行是否为空
if(*current_line != '\0' && strlen(current_line) > 0) {
// 如果不是空行,添加到新数组
new_lines[new_line_count++] = current_line;
}
}
// 更新线程数和指针
*line_count = new_line_count;
lines = new_lines;
// 清理旧数组
free(lines); // 调整为实际使用的大小
}
// 使用示例
int main() {
char *lines[100]; // 假设原有数据在这里
int line_count = ...; // 获取文件的实际行数
remove_empty_lines(lines, &line_count);
// 然后你可以直接使用lines数组,其中已经去除了空行
for(int i = 0; i < line_count; i++) {
printf("%s\n", lines[i]);
}
return 0;
}
阅读全文