2015-06-26 9 views
5

Sto provando a prendere input dallo STDIN. Se la stringa di input inizia con il carattere '$', l'input non viene convertito in stringa così com'è.

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

Qualcuno può per favore fatemelo sapere il motivo per cui il compilatore C sostituisce i personaggi con '0' se incontra il simbolo '$'?

+5

Sto indovinando che si sta chiamando il programma da una shell unix-like, e la shell è interpretting '$ foo' come un nome di variabile, e sostituendolo con niente (perché il' foo' variabile non esiste). Prova invece a usare "$ pippo" (con virgolette singole). – godlygeek

+2

Inoltre, stai prendendo una stringa come argomento da riga di comando, non da stdin, sono molto diversi. – godlygeek

risposta

10

Non è il tuo programma. La tua shell lo interpreta come una variabile, quindi passa il suo valore al tuo programma.

Per risolvere il problema, sfuggire allo $ quando si richiama il programma dalla shell.

./yourprogram '$arg' 
+0

Oppure '" \ $ arg "' che consentirebbe ad altre variabili di espandersi. –

Problemi correlati