2012-04-29 186 views
-2

为什么下面的程序卡在无限循环中?无限循环while read stdio.h

int main() 
{ 
    string fname = "C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\include\\stdio.h"; 
    char line[985]; 

    ifstream file(fname.c_str()); 

    if(file == NULL) 
    { 
     cout<<"unable to open"; 
     exit(0); 
    } 

    while(!file.eof()) 
    { 
     file.getline(line,'\n'); 
     cout<<line<<'\n'; 
    } 
} 
+3

stdio.h中无关这个问题 –

回答

2

getline()的第二个参数是流大小,第三个参数是分隔符。

取而代之的是:

file.getline(line,'\n'); 

尝试这样的:

file.getline(line,256,'\n'); 
+0

好,我试过,但没有奏效。而且最长的行的长度是282个字符,所以我试图将'行'的大小设置为所需长度的3倍以上,但仍然不起作用。 – user1232138

+1

您不必担心长度最长的线。 'getline()'读取指定的'size'或直到它到达分隔符。我使用stdio.h的路径在Linux上运行你的代码。它打印正确。 –

+0

@Downvoter,请您解释原因。 –