#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX_LINE_LENGTH 1024
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Usage: %s <filename>\n", argv[0]);
return 1;
}
FILE *file;
char line[MAX_LINE_LENGTH];
int len;
if ((file = fopen(argv[1], "r")) == NULL) {
printf("Error: Unable to open file '%s'\n", argv[1]);
return 1;
}
while (fgets(line, MAX_LINE_LENGTH, file) != NULL) {
len = strlen(line);
while (len > 0 && (line[len - 1] == ' ' || line[len - 1] == '\t' || line[len - 1] == '\n' || line[len - 1] == '\r')) {
line[len - 1] = '\0';
len--;
}
if (strlen(line) > 0) {
printf("%s\n", line);
}
}
fclose(file);
return 0;
}
#include <stdio.h>
:包含标准输入输出库,提供了文件操作和输入输出功能。
#include <stdlib.h>
:包含标准库,提供了一些常用的函数和类型。
#include <string.h>
:包含字符串操作相关的函数库。
#include <ctype.h>
:包含字符处理函数库,用于字符分类和转换。
#define MAX_LINE_LENGTH 1024
:定义了一个常量**MAX_LINE_LENGTH
**,表示每行文本的最大长度为1024个字符。
int main(int argc, char *argv[])
:程序的入口函数,接受命令行参数。
if (argc != 2)
:检查命令行参数数量是否正确,如果不是2个参数,打印使用说明并退出程序。
FILE *file;
:声明了一个文件指针**file
**,用于打开和操作文件。
char line[MAX_LINE_LENGTH];
:声明了一个字符数组**line
**,用于存储每行文件内容。
int len;
:声明了一个整型变量**len
**,用于记录每行文件内容的长度。
if ((file = fopen(argv[1], "r")) == NULL)
:打开命令行参数指定的文件,如果文件打开失败,则打印错误信息并退出程序。
while (fgets(line, MAX_LINE_LENGTH, file) != NULL)
:逐行读取文件内容到字符数组**line
**中,直到文件结束。
len = strlen(line);
:计算当前行的长度。
while (len > 0 && (line[len - 1] == ' ' || line[len - 1] == '\t' || line[len - 1] == '\n' || line[len - 1] == '\r'))
:不断循环,检查当前行末尾是否包含空格、制表符、换行符和回车符,如果是,则将其替换为字符串结束符**\0
,并将len
**减1。
if (strlen(line) > 0)
:判断处理后的行是否为空行。
printf("%s\n", line);
:输出处理后的行到标准输出,并添加换行符。
fclose(file);
:关闭文件,释放资源。
return 0;
:返回程序执行成功的标志。