C语言模拟less命令,文件名用命令行参数获取每次显示二十行每行八十字符后入
时间: 2024-03-17 12:41:53 浏览: 19
好的,以下是一个简单的C语言程序,模拟less命令,实现每次显示20行,每行80个字符,从命令行参数获取文件名,并将内容输出到标准输出流(屏幕),每次按下空格键(或回车键)后再显示下20行,直到文件结束为止。最后将输出结果保存到文件中。
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LINE_LEN 80
#define MAX_LINE_NUM 20
int main(int argc, char *argv[]) {
// 检查参数数量
if (argc != 2) {
printf("Usage: %s filename\n", argv[0]);
return 0;
}
// 打开文件
FILE *fp = fopen(argv[1], "r");
if (!fp) {
printf("Cannot open file %s\n", argv[1]);
return 0;
}
// 初始化变量
char line[MAX_LINE_LEN + 1];
int line_count = 0;
int page_count = 1;
int c;
// 循环读取文件内容并输出到标准输出流
while ((c = fgetc(fp)) != EOF) {
// 每行输出80个字符
if (line_count < MAX_LINE_LEN) {
line[line_count++] = c;
} else {
line[line_count] = '\0';
printf("%s\n", line);
line_count = 0;
}
// 每20行输出一页
if (++line_count == MAX_LINE_NUM) {
printf("--Page %d--\n", page_count++);
line_count = 0;
getchar(); // 等待用户按下空格键或回车键
}
}
// 输出最后一页
if (line_count > 0) {
line[line_count] = '\0';
printf("%s\n", line);
}
printf("--Page %d--\n", page_count++);
// 关闭文件
fclose(fp);
// 将输出结果保存到文件中
fp = fopen("output.txt", "w");
if (!fp) {
printf("Cannot open file output.txt\n");
return 0;
}
rewind(stdout);
while ((c = fgetc(stdout)) != EOF) {
fputc(c, fp);
}
fclose(fp);
return 0;
}
```
注意:这个程序只是一个简单的模拟,没有考虑过多的异常情况和边界情况,仅供参考。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)