2013-03-13 40 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...

相关问题