Ich benutze gcc in Ubuntu14. Hier ist mein Code: (test.c)Falsche Ausgabe von argv?
#include <stdio.h>
int main(int argc, char *argv[]){
int i=0;
for(i=1; i <argc;i++)
{
if (argv[i] = "xx") {
printf("I got you!\n");
}
printf("%d %s\n",i, argv[i]);
}
return 0;
}
ich kompilieren und diesen Code ausführen mit:
gcc test.c -o test
./test aa bb xx
Ich erwarte, dass der Ausgang
1 aa
2 bb
I got you!
3 xx
zu sein Aber es kommt mit
heraus 0I got you!
1 xx
I got you!
2 xx
I got you!
3 xx
auch wenn ich ./test aa bb
die Ausgabe
I got you!
1 xx
I got you!
2 xx
Ich weiß nicht, warum immer die Ausgabe mit „xx“ herauskommt, ist es jemand geben Sie mir einen Hinweis, bitte?
Falscher Kompilierbefehl. Sie sollten 'gcc -Wall -g test.c -o testprog' verwenden (Sie möchten alle Warnungen '-Wall' und Debug-Info '-g' !!) dann ** den Debugger verwenden **' gdb testprog' –
Sie können vergleiche Zeichenfolgen in C nicht mit dem Operator '==' (den Sie nicht verwenden), sondern müssen den Befehl 'strcmp' verwenden (http://en.cppreference.com/w/c/string/byte/ strcmp) -Funktion. –