繁体   English   中英

EOF进入无限循环

[英]EOF going into infinite loop

我正在从文件中读取一些文本并将其写入另一个文件。

当我尝试打开并读取log_2做某事时,万一grep返回了一些字符串,它可以很好地工作。

但是,如果grep本身dint返回了任何内容 ,则我的代码将陷入无限循环。 我尝试打印要在循环中读取的字符,它无限打印“ a”。

system("egrep 'Security = |State = ' log.txt > log_1.txt");
system("awk -F ' Security = | State = { Interface=' '{print $2}' log_1.txt > log_2.txt ");

// The exact strings to be greped and awked are different. Cant write them here.    

FILE *pReadFile;
char cTemp;

pReadFile=fopen ( "log_2.txt" , "r+");

if (pReadFile==NULL )
{
    std::cout << ("Error opening Config file");
    fclose(pReadFile);
    return ;
}

cTemp = fgetc (pReadFile);

if(cTemp == EOF)    
return ; 


while( cTemp != EOF )
{
      // Do Something

      cTemp = fgetc (pReadFile);
}

有人可以解释吗?


只是为了补充以防万一有人遇到类似问题,该代码在基于Intel的Ubuntu系统上也能正常工作,但是在Freescale上使用Ubuntu的系统会引起问题。 因此要小心,并且始终使用int是安全的。

EOF是一个int而不是char

char cTemp;

应该:

int Temp;

参见这里的说明:

http://c-faq.com/stdio/getcharc.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM