2016-04-09 10 views
-4

Ich versuche, Argumente über die Befehlszeile an int mit atoi übergeben konvertieren, aber es dauert ewig, egal ob die Zeichenfolge klein oder groß ist. Irgendwelche Ideen?Warum erscheinen die Ergebnisse von atoi() nicht in der Ausgabe meines Programms?

int main(int argc, char *argv[]) { 
int id; 
int v[5]; 
id=atoi(argv[2]); 
v[0]=atoi(argv[3]); 
v[1]=atoi(argv[4]); 
v[2]=atoi(argv[5]); 
v[3]=atoi(argv[6]); 
v[4]=atoi(argv[7]); 

//conversion must be taking forever; this is never printed 
printf("%d %d %d %d %d %d", id,v[0],v[1],v[2],v[3],v[4]); 

return 0; 
} 
+3

Überprüfen Sie 'argc'? Was ist "v"? Bitte posten Sie ein ** vollständiges ** minimales Beispiel. – gsamaras

+2

Übrigens wissen Sie, dass die Ausgabe nach "stdout" standardmäßig * line buffered * ist, d. H. Nichts wird gedruckt, bis Sie einen Zeilenumbruch drucken. Beenden Sie Ihre Ausdrucke immer mit einem Zeilenumbruch. –

+2

Was auch immer passiert, es ist unwahrscheinlich, dass "atoi() ewig dauert" ist eine gute Beschreibung des Problems. 'atoi()' ist eine sehr schnelle Funktion. –

Antwort

2

Ich vermute, Sie sind Suffering from Buffering. Ändern Sie Ihre printf Linie

printf("%d %d %d %d %d %d\n", id,v[0],v[1],v[2],v[3],v[4]); 

Notiere die hinzugefügt Newline, \n.

+0

Das sollte ein Kommentar sein ... – gsamaras