2013-03-13 58 views
0

我是一個新手程序員我使用malloc後,程序突然要求輸入

//allocating space for final output 
//text_count is given by another function, let's just say i have a value for it 
//out is my typedef struct 

out *fin[text_count]; 

for(i=0; i<text_count; i++){ 
    fin[i] = malloc(sizeof(out)); 
} 

//this is a test 
fin[1]->appearances = 1; 

printf("%d",fin[1]->appearances); 

// ..other code 

我注意到,這是分配之後,程序突然輸出這樣的:

1_ 

下劃線閃爍,表明需要輸入。

這裏有什麼問題?這是分配嗎?或者下面的代碼?

好的,讓我澄清這一點,即時通訊使用代碼塊。所以當我得到一個閃爍的光標時,這意味着它需要一個輸入。當我得到這個輸出後,似乎發生了無限循環的輸入。

+6

'下劃線閃爍,表示它需要一個input'不,不......我想你還年輕,並且很少(如果有的話)看到一個ASCII文本屏幕或更少使用一個積極的... – ppeterka 2013-03-13 12:21:27

+0

是否認真「突然」,考慮到你實際調用'printf()'在你陳述的'malloc()'循環後短?我可以推測你的問題可能是'// ..其他代碼'中的無限循環,也許在那裏檢查。 (這個,假設你期望你的代碼完成並且程序結束*一點)。 – WhozCraig 2013-03-13 12:23:55

+0

給出的代碼沒有問題。問題在別的地方 – 2013-03-13 12:27:31

回答

3

您只是看到文本終端的光標。它可能是閃爍的,也可能不是,這本身並不意味着什麼。

你可能要添加一個換行符:

printf("%d\n", fi[1]->appearances); 

得到一個屬於自己的行輸出。

0

您的printf後的遊標並不意味着它正在等待輸入。

如果您正在等待read系統調用,您可以使用strace進行確認。

用法: strace ./myApplication arg1 arg2...

相關問題