标准输入C:如果存在$,则字符串不正确

标准输入C:如果存在$,则字符串不正确,c,gcc,C,Gcc,我正试图从标准输入中获取输入。如果输入字符串以字符“$”开头,则输入不会按原样转换为字符串 int main(int argc, char*argv[]){ printf("%s\n",argv[1]); } 有人能告诉我为什么C编译器在遇到“$”符号时会将字符替换为“0”吗 这不是你的节目。它是您的shell将其解释为变量,然后将其值传递给您的程序 要解决此问题,请在从shell调用程序时转义$ ./yourprogram '$arg' 我猜您是从一个类似unix的shell调用

我正试图从标准输入中获取输入。如果输入字符串以字符“$”开头,则输入不会按原样转换为字符串

int main(int argc, char*argv[]){
     printf("%s\n",argv[1]);
}

有人能告诉我为什么C编译器在遇到“$”符号时会将字符替换为“0”吗

这不是你的节目。它是您的shell将其解释为变量,然后将其值传递给您的程序

要解决此问题,请在从shell调用程序时转义
$

./yourprogram '$arg'

我猜您是从一个类似unix的shell调用该程序,shell将
$foo
解释为变量名,并将其替换为空(因为变量
foo
不存在)。尝试改用
'$foo'
(带单引号)。此外,您将字符串作为命令行参数,而不是stdin中的字符串-它们非常不同。或者
“\$arg”
,这将允许其他变量展开。