我的 main 应该做的是使用系统调用从 stdin 读取。或者,如果给出了文件参数,则打开文件参数。我已经将其编码为从一个文件参数中读取。但是现在我需要它从多个文件参数中打开,而我对如何执行此操作的逻辑不甚了解。我如何让我的代码能够打开多个文件参数?
int main(int argc, char *argv[]) {
char *file_pathname = NULL;
int fd;
char file_buffer[540];
//Check for proper number of arguments:
if(argc < 2) {
exit(2);
}
if(argc < 3) {
file_pathname = "stdin";
}
file_pathname = argv[2];
if(argc < 3) {
((fd = read(STDIN_FILENO,file_buffer, FILE_BUFFER_SIZE)));
}
// FILE argument given, so try to open it:
if (argc == 3) {
if ((fd = open(file_pathname,O_RDONLY)) == -1) {
perror("ERROR OPENING FILE");
return 2;
}
最佳答案
如果你想让你的程序只在 linux (POSIX Compatible) 系统上运行你可以感兴趣
man 3 getopt
这个函数可以帮助您解析短 unix 风格的命令行参数,例如:
myprog -a 5654 -f -n ~/Test/input.txt
如果要解析长选项,还有getopt_long()和getopt_long_only()。
如果你想要一些特定的参数解析器(我不推荐),你可以将它实现为库。
如果您使用的是 glib 或 gtk,则有 glib 解析器。或者如果您有 qt 项目,则使用 qxt(扩展 Qt 库)中的解析器。或者,如果需要,您可以在谷歌上搜索更轻量级的跨平台参数解析器。
关于c - 从标准输入或多个文件参数中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15514393/