我想使用strtok傳遞文件的行;這些值用逗號分隔。但是,strtok也讀取只包含空格的空白行。在這種情況下,是不是應該返回一個空指針?如何在使用strtok時跳過輸入文件中的空行?
我該如何忽略這樣的行?我試圖檢查NULL,但如上所述,它不起作用。
我想使用strtok傳遞文件的行;這些值用逗號分隔。但是,strtok也讀取只包含空格的空白行。在這種情況下,是不是應該返回一個空指針?如何在使用strtok時跳過輸入文件中的空行?
我該如何忽略這樣的行?我試圖檢查NULL,但如上所述,它不起作用。
void function_name(void)
{
const char delimiter[] = ",";
char line_read[9000];
char keep_me[9000];
int i = 0;
while(fgets(line_read, sizeof(line_read), filename) != NULL)
{
/*
* Check if the line read in contains anything
*/
if(line_read != NULL){
keep_me[i] = strtok(line_read, delimiter);
i++;
}
}
}
所以說明一下。
您正在使用while循環讀取文件,該循環將整行文件逐行讀取(fgets
)到數組line_read
中。
每次讀入一行時,它都會檢查它是否包含任何內容(NULL
檢查)。
如果它包含的東西是使用strtok
解析它,並將其讀入keep_me
,否則它將保留在line_read
數組中,您顯然不會在程序中使用它。
輸入文件的格式是什麼? – cnicutar 2011-06-08 04:40:15
@cnicutar它是一個純文本文件,每行中有兩個值用逗號分隔。 – drox 2011-06-08 04:51:19
第一次調用'strtok'可能會返回整行作爲第一個標記。爲什麼不在從文件中讀取行後檢查行內容,然後用'strtok'分割它。 – pascal 2011-06-08 04:52:03