linux中用c仿写cat命令: 1、先实现读取文件的内容显示到终端 2、用20的buf空间读取超过20个字符的文档--while循环读取 3、读取多个文档
时间: 2024-09-26 22:03:33 浏览: 33
在Linux中,使用C语言仿写cat命令涉及到文件I/O操作以及基本的输入输出处理。下面是一个简单的示例,实现了你提到的需求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF_SIZE 20
void print_content(const char *filename) {
FILE *file = fopen(filename, "r");
if (file == NULL) {
perror("Failed to open file");
return;
}
char buffer[BUF_SIZE];
size_t bytes_read;
while ((bytes_read = fread(buffer, sizeof(char), BUF_SIZE, file)) > 0) {
buffer[bytes_read] = '\0'; // Ensure null termination after reading
printf("%s", buffer); // Display the content in terminal
if (ferror(file)) break; // Check for errors and stop if any
}
if (!feof(file)) {
perror("Unexpected end of file");
}
fclose(file);
}
int main(int argc, char *argv[]) {
if (argc <= 1) {
printf("Usage: cat [file1] [file2] ...\n");
return 1;
}
for (int i = 1; i < argc; i++) {
print_content(argv[i]);
printf("\n"); // Add newline between files
}
return 0;
}
```
这个程序首先检查是否有多于一个的文件名作为参数,然后遍历每个文件名,逐行读取内容并打印到控制台。`fread()`函数用于每次读取指定大小的缓冲区,并在遇到错误或文件结束时停止。
阅读全文