c - 从标准输入或多个文件参数中读取

标签 c linux

我的 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/

相关文章:

c - 我可以在哪里放置数组下标?

python - 通过 pyodbc 和 Linux(使用 Docker)访问 i Series AS400 数据库时出现问题

c++ - C 和 C++ 标准的数学精度要求

c - ncurses 菜单 - 不会显示我的用户输入的字符串

python - 是否可以在 CLI 中修改 json 对象?

linux - 如何将通过 vars 和 STDIN 插值构建的字符串附加到文件中?

java - Matlab 与 Java 中运行的 Java 守护进程的连接

检查线程结束条件

c - 使用 scanf() 从键盘读取时从先前输入读取换行符

c - 乘以 CHOLMOD 中的超结 L?