2015-06-26 4 views
5

Я пытаюсь принять входные данные от STDIN. Если входная строка начинается с символа '$', то вход не преобразуется в строку, как есть.

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

Может кто-то пожалуйста, дайте мне знать, почему C компилятор заменяет символы с «0», если он встречает символ «$»?

+5

Я предполагаю, что вы вызываете программу из Unix-подобной оболочки и оболочки interpretting '$ Foo' как имя переменной, и заменяя его ни с чем (потому что переменная' Foo' не существует). Попробуйте вместо этого использовать '' $ foo'' (с одинарными кавычками). – godlygeek

+2

Кроме того, вы берете строку как аргумент командной строки, а не из stdin - они совсем разные. – godlygeek

ответ

10

Это не ваша программа. Это ваша оболочка, интерпретирующая ее как переменную, а затем передавая ее значение вашей программе.

Чтобы обойти это, избегайте $, когда вы вызываете программу из своей оболочки.

./yourprogram '$arg' 
+0

Или '' \ $ arg ", что позволит другим переменным расширяться. –