我不能将以 #
开头的字符串作为命令行参数传递。
这是一个简单的测试:
#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 Language 和 C 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/