c - 无法将 '#' 字符作为命令行参数传递

标签 c bash command-line-arguments

我不能将以 # 开头的字符串作为命令行参数传递。

这是一个简单的测试:

#include <stdio.h>

int main(int argc, char *argv[])
{
    for (int i = 1; i < argc; i++)
        printf("%s ", argv[i]);

    putchar('\n');

    return 0;
}

如果我输入参数如下:

2 4 # 5 6

argc 的值为 3 而不是 6。它读取 # 并停在那里。我不知道为什么,在我的 The C Programming LanguageC Primer Plus 中找不到答案。

最佳答案

# 在 Unix shell 中开始注释,很像 C 中的 //

这意味着当 shell 将参数传递给程序时,它会忽略# 后面的所有内容。用反斜杠或引号将其转义意味着它会像其他参数一样对待,程序应该按预期工作。

2 4 \# 5 6

2 4 '#' 5 6

2 4 "#" 5 6

请注意,# 只是一个单词开头的注释字符,因此这也应该有效:

2 4#5 6

关于c - 无法将 '#' 字符作为命令行参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58837835/

相关文章:

linux - bash 脚本从文件中获取所花费的时间

c - 将 C 预处理器翻译成 Rust

c - 如何有效地计算功率

regex - 使用基于 sed/awk 的 linux 替换字符串

linux - 如何设置将在 aws ec2 ubuntu 16.04 实例上运行 jar 文件的服务

python - 如何用等效文件内容的python字符串替换文件名的命令行参数

c - 由终端参数引起的段错误

python - 在点击命令之上装饰

c - C 编程语言的 UML

c - 如何在C程序中使用静态pthread库(Visual Studio 2008)?