0

我正在从一个文件中寻找和唤醒一些文本并将其写入另一个文件。

当我试图打开并读取 log_2 来做某事时,如果 grep 返回了一些字符串,它可以正常工作。

但是,如果 grep 本身返回任何东西,我的代码将进入无限循环。我尝试打印循环中正在读取的字符,它会无限打印一个'ÿ'。

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);
}

有人可以解释吗?


只是为了以防万一有人遇到类似问题,此代码在基于英特尔的 Ubuntu 系统上运行良好,但带有 Ubuntu 的飞思卡尔系统会导致问题。所以要小心,并始终使用 int 以确保安全。

4

1 回答 1

4

EOF是一个int不是一个char

char cTemp;

应该:

int Temp;

看这里的解释:

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

于 2012-08-20T07:55:39.260 回答