strtok分段错误,只是在input文件的第一行为空时出现分段错误

我正在使用AIX。 有几个post分段错误与strtok,但我找不到任何帮助我。

我正在写ac程序,我想在程序中读取一个文件,然后对这一行进行sorting(我只需要在第二行结尾的分钟和秒)。

这里是我的代码片段:

FILE *timeFile; int x, timeElapsed; char line[1000], *temp; int main() { x = 0; timeFile= fopen("time.txt", "r"); if(timeFile==NULL) { printf("\nerror opening file time.txt\n"); printf("\nPlease update system time manually\n"); return 1;//error } while( x<10 && fgets(line, sizeof(line), timeFile)!= NULL) { if( x==1 )//we need data from the second line { temp = strtok(line, " "); printf("\nline: %s",line);//the Output here is as expected 'line: real' printf("\ntemp: %s",temp);//the error occurs here at temp break; } x++; } } 

我想要阅读的文件有这里面:

 real 0m1.25s user 0m0.09s sys 0m0.02s 

第一行是空白的(只是我想的返回字符),“真正的0m1.25s”是第二行。 我只想读第二行。 当我尝试读取临时variables时发生错误。

有趣的是,我在另一个程序中使用了几乎相同的代码来完成相同的工作,并且工作。 唯一的区别是在前一个项目的input文件中没有空行或制表符。 所以我很困惑,请帮忙。

PS:我正在使用德语键盘,所以它自己的话大写,对此感到遗憾。

请改用sscanf() 。 尽量避免strtok()不惜一切代价,除非绝对必要。

以下是您可能会觉得有用的来源的链接