2015-06-26 17 views
5

Ich versuche, die Eingabe von der STDIN zu übernehmen. Wenn die Eingabezeichenfolge mit dem Zeichen '$' beginnt, wird die Eingabe nicht in die Zeichenfolge konvertiert, wie sie ist.

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

Kann jemand bitte lassen Sie mich wissen, warum C-Compiler die Zeichen mit ‚0‘ ersetzt, wenn sie die ‚$‘ Symbol begegnet?

+5

Ich vermute, dass Sie das Programm von einem Unix-artige Shell anrufen, und die Schale interpretting '$ foo' als Variablennamen, und es mit nichts ersetzen (weil die Variable 'foo' existiert nicht). Verwenden Sie stattdessen "$ foo" (mit einfachen Anführungszeichen). – godlygeek

+2

Außerdem nehmen Sie eine Zeichenfolge als Befehlszeilenargument, nicht von stdin - sie sind sehr unterschiedlich. – godlygeek

Antwort

10

Es ist nicht Ihr Programm. Es wird von Ihrer Shell als Variable interpretiert und dann an Ihr Programm weitergegeben.

Um dies zu umgehen, die $ entkommen, wenn Sie das Programm von Ihrer Shell aufrufen.

./yourprogram '$arg' 
+0

Oder '" \ $ arg "' was andere Variablen erlauben würde zu expandieren. –

Verwandte Themen