我正在使用argv来存储命令行中的字符.我只是注意到,如果我输入,#我得到一个空而不是字符#.为什么会这样?
#include <stdio.h>
int main(int argc,char *argv[])
{
printf("%c",argv[1][0]);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码适用于任何字符,除了#返回分段错误(核心转储).
该#字符表示对shell的注释的开始,因此它永远不会到达您的程序.结果,argv只有一个元素,即argv[0]访问argv[1]是从数组的末尾读取.这会调用未定义的行为,在这种情况下会出现崩溃.
为了让shell将这个特殊字符传递给您的程序,您需要引用它:
./myprogram "#"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |