在处理文本文件时,常常会碰到须要去除文件中空行的情况。利用C言语停止这一操纵既是一种编程练习,也是一种实用的技能。本文将具体介绍怎样利用C言语编写一个顺序,该顺序可能读取一个文本文件,去除其中的空行,并将成果输出到另一个文件中。
一个用于去除文本文件中空行的C言语顺序平日包含以下多少个部分:
起首,须要打开输入文件跟输出文件。假如文件打开掉败,顺序应当输犯错误信息并退出。
#include <stdio.h>
#include <stdbool.h>
int main() {
FILE *fp_in, *fp_out;
char filename_in[] = "input.txt";
char filename_out[] = "output.txt";
fp_in = fopen(filename_in, "r");
if (fp_in == NULL) {
perror("Error opening input file");
return 1;
}
fp_out = fopen(filename_out, "w");
if (fp_out == NULL) {
perror("Error opening output file");
fclose(fp_in);
return 1;
}
}
利用轮回读取文件的每一行,直到文件末端。
char line[1024];
bool isEmpty = true;
while (fgets(line, sizeof(line), fp_in)) {
// 处理下一行...
}
在读取每一行后,检查该行能否为空。这里,我们将空行定义为不包含任何非空白字符的行。
isEmpty = true;
for (int i = 0; line[i] != '\0'; i++) {
if (line[i] != ' ' && line[i] != '\t') {
isEmpty = false;
break;
}
}
if (!isEmpty) {
// 行不为空,写入到输出文件
fputs(line, fp_out);
}
假如检测到行不为空,则将其写入到输出文件。
if (!isEmpty) {
fputs(line, fp_out);
}
在顺序结束前,封闭打开的文件。
fclose(fp_in);
fclose(fp_out);
return 0;
以下是去除文本文件中空行的完全C言语顺序示例:
#include <stdio.h>
#include <stdbool.h>
int main() {
FILE *fp_in, *fp_out;
char filename_in[] = "input.txt";
char filename_out[] = "output.txt";
fp_in = fopen(filename_in, "r");
if (fp_in == NULL) {
perror("Error opening input file");
return 1;
}
fp_out = fopen(filename_out, "w");
if (fp_out == NULL) {
perror("Error opening output file");
fclose(fp_in);
return 1;
}
char line[1024];
bool isEmpty = true;
while (fgets(line, sizeof(line), fp_in)) {
isEmpty = true;
for (int i = 0; line[i] != '\0'; i++) {
if (line[i] != ' ' && line[i] != '\t') {
isEmpty = false;
break;
}
}
if (!isEmpty) {
fputs(line, fp_out);
}
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
经由过程上述步调,我们可能利用C言语编写一个顺序来去除文本文件中的空行。这不只可能帮助我们更好地管理文本数据,还可能加深我们对C言语文件操纵的懂得。