2016-04-09 21 views
-4

atoi'u kullanarak komut satırında iletilen argümanları int'a dönüştürmeye çalışıyorum, ancak dizenin küçük veya büyük olmasına bakılmaksızın sonsuza dek devam ediyor. Herhangi bir fikir?Programımın çıktısında neden atoi() sonuçları görünmüyor?

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

'argc' kontrol ediyor musunuz? V nedir? ** tamam ** minimal örnek gönderin. – gsamaras

+2

Bu arada, "stdout" öğesinin çıkışının varsayılan olarak * satır arabelleği * olduğunu, yani bir satırsonu yazdırılana kadar hiçbir şeyin yazdırılmadığını biliyorsunuz. Çıktılarınızı her zaman bir son satır ile bitirin. –

+2

Her ne oluyorsa, "atoi() nin sonsuza dek sürmesi" sorunun iyi bir açıklamasıdır. atoi() 'çok hızlı bir işlevdir. –

cevap

2

Suffering from Buffering olduğundan şüpheleniyorum.

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

Not eklenen yeni satır, \n için printf hattını değiştirin.

+0

Bu bir yorum olmalı ... – gsamaras

İlgili konular