我有一個文件,其中有一些由製表符分隔的字段。總是會有17級的標籤,但有順序可以不同,如..在C中分割字符串以識別連續製表符
75104\tDallas\t85\t34.46\t45.64
75205\tHouston\t\t37.34\t87.32
93434\t\t\t1.23\t3.32
當我在下列方式使用strtok
while (fgets(buf, sizeof(buf), fp) != NULL) {
tok = strtok(buf,"\t");
while(tok != NULL) {
printf("%s->",tok);
tok = strtok(NULL,"\t");
}
}
我得到的所有令牌,但雙標籤\t\t
以上被忽略。但是,我需要知道字段爲空時,我不能忽略多個選項卡,因爲結構取決於要計數的17個選項卡,如果字段爲空,則使用佔位符。
我試着處理這個問題有
if(tok == NULL || '')
,但我不認爲strtok
識別標籤後標籤。處理這個問題的最好方法是什麼?
看着它 - 你的if(tok == NULL ||'')'嘗試看起來像你習慣於另一種語言。這在技術上是有效的,但幾乎肯定不是你想要做的。 – usr2564301
strtok()無法使用。構建狀態機和/或使用strspn()/ strcspn()。 – joop