C 字符串变为空

标签 c command-line-arguments argv

我正在学习如何在 C 中获取参数,但是,当我使用以下输入运行下面的代码时,第一个变为空。

输入:./a.out a b c d e f g h i j k

输出:(null) b c d e f g h i j k

#include <stdio.h>

    int main(int argc, char *argv[])
    {
        int i = 2, j = 0;
        char *foo = argv[1];
        char *bar[10];
        while(j < 10 && i < argc)
        {
            bar[j++] = argv[i++];
        }
        bar[j] = NULL;

        printf("%s ", foo);
        for(j = 0; bar[j] != NULL; j++)
        {
            printf("%s ", bar[j]);
        }
        printf("\n");

        return 0;
    }

最佳答案

在循环结束时,您将 NULL 写入 bar[10],但您只分配了 bar[0 - 9] .这可能会覆盖 foo

关于C 字符串变为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8827187/

相关文章:

c - 为什么验证密码的代码总是拒绝输入?

命令行参数 C

c - 传递参数 1 丢弃指针目标类型的限定符

c++ - 读取 argv 时 XCode BAD ACCESS

c++ - 我可以在 Visual Studio 的单个项目中混合 C++ 和 C 吗?

c - 了解#pragma acc 内核

android - Android NDK printf 输出在哪里?

java - 如何在java中从命令行启动msaccess数据库?

swift - CommandLine.arguments 和 Processinfo.processinfo.arguments 在 swift 中的区别

javascript - 使用 Node 运行程序时检查是否给出 ARGV