我試圖在C中對字符串進行不同的變量排序(當我說字符串時,我的意思是字符數組)。該字符串包含較小的「塊」,由製表符分隔,並且我希望sscanf在每次調用時將下一個「塊」放入一個字符串中。使用scanf一次返回一個字符串,用特定字符分隔
例如,如果字符串是00:00:00:00 12345 abcd
,我想第一個sscanf的調用把00:00:00:00
一個字符串,接下來的sscanf調用把12345
字符串中,等
我不明白爲什麼我的代碼不起作用。我有sscanf(s, "%[^\t]%*c", buf)
,我認爲這應該告訴sscanf讀取所有內容到一個製表符,然後%*c
告訴它讀取但放棄製表符(以便下次調用sscanf時,沒有前導製表符字符)。不會有超過1個製表符分隔字符串中的塊。
我確信有比使用sscanf更好的方法,如果有人告訴我,這會很棒,但我也想弄清楚,因爲它似乎很煩人,我不知道爲什麼它不起作用。感謝您的幫助
'的scanf()'是邪惡的,不使用它,這是一個特別糟糕的主意使用它的符號化。 'strchr()','strstr()'和'strtok_r()'都是更好的選擇。 – 2013-07-24 12:35:43
scanf()沒有錯。請提供一個代碼示例,其中指出了使用scanf()的合理嘗試,並且我會幫助您實現它。 – JackCColeman