linux c语言接收一个或多个文件名为参数。如果是多个文件名,依次打印文件内容
时间: 2024-10-12 12:13:02 浏览: 15
在Linux环境下,C语言编写一个程序来接受一个或多个文件名作为参数并打印它们的内容,可以利用`argc`和`argv`数组来获取命令行参数。首先,确保已经包含了标准库`stdio.h`用于文件操作,以及`unistd.h`包含`fork()`和`execvp()`函数。
以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
// 检查是否有足够参数
if (argc <= 1) {
printf("Usage: %s file1 [file2 ...]\n", argv[0]);
return 1;
}
for (int i = 1; i < argc; i++) { // 从第二个参数开始,因为第一个是程序名
FILE* file = fopen(argv[i], "r"); // 尝试打开文件
if (file == NULL) {
perror("Failed to open file: ");
continue; // 如果无法打开,跳过这个文件
}
int ch;
while ((ch = fgetc(file)) != EOF) {
printf("%c", ch);
}
fclose(file); // 关闭文件
printf("\n--- Content of %s ---\n", argv[i]); // 打印文件名分隔
}
return 0;
}
```
在这个例子中,程序会检查传入的参数数量,然后遍历每个文件名,尝试打开并逐字符读取文件内容。如果遇到错误,它会忽略该文件并继续处理下一个。每个文件之间的内容由一条分隔线标记。
阅读全文