如何通过命令行和C遍历argv

如何通过命令行和C遍历argv

#include <stdio.h>

int main(int argc, char **argv) {
    if (argc != 2) {
        fprintf(stderr, "usage: one file only", argv[0]);
        return (1);
    } else {
        for(int i = 0; i < argc; i++) {
            putchar(argv[i]);
        }
    }

}

比如说我想打印输入
$ gcc -Wall fileabove.c
$ ./a.out abcdefghijlmn
abcdefghijlmn

基本上只要打印出我输入的任何文本。

最佳答案

putchar(argv[i]);

是不正确的,因为putchar需要单个字符(类型char),您传递的是指针(char*)。应该是
puts(argv[i]);

所以正确的密码是:
#include <stdio.h>

int main(int argc, char **argv) {
    if (argc != 2) {
        fprintf(stderr, "usage: one file only\n", argv[0]);
        return 1;
    }

    // no need for the else
    // you exit program anyway if argc != 2
    // makes code more readable

    puts(argv[1]);

    return 0;
}

如果要逐字符打印:
#include <stdio.h>

int main(int argc, char **argv) {
    if (argc != 2) {
        fprintf(stderr, "usage: one file only\n", argv[0]);
        return (1);
    }

    for(size_t i = 0; argv[1][i] != '\0'; ++i)
        putchar(argv[1][i]);

    putchar('\n');

    return 0;
}

编辑将puts("")更改为putchar('\n'),并删除了Jonathan Leffler在评论中提到的strlen

关于c - 如何通过命令行和C遍历argv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48958065/

10-11 15:55