【发布时间】:2013-07-24 12:29:31
【问题描述】:
我正在尝试将字符串排序为 C 中的不同变量(当我说字符串时,我的意思是 char 数组)。该字符串包含较小的“块”,由制表符分隔,我希望 sscanf 每次调用时都将下一个“块”放入字符串中。
例如,如果字符串是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()都是更好的选择。 -
scanf() 没有任何问题。请提供一个代码示例,表明使用 scanf() 的合理尝试,我将帮助您使其工作。