C 斯特托克与德里姆问题

C 斯特托克与德里姆问题,c,delimiter,strtok,C,Delimiter,Strtok,我正在读一个单独的.txt文件并抓取每一行。然后我使用strtok来处理每个字符串。我有一个#define宏: #define DELIMS "!\"#$%&()|'*+,?/:;<=>@[\092]^_{}~\177\t\ " 输出 define FLUSH while 它在一个printf中显示三个单词,而不是一次显示一个单词。好的,您不必在delim字符串中转义空格。我很惊讶你的编译器没有警告你。你在DELIMS字符串末尾的空格之前有。不需要它。您认为\092是什么

我正在读一个单独的
.txt
文件并抓取每一行。然后我使用strtok来处理每个字符串。我有一个#define宏:

#define DELIMS "!\"#$%&()|'*+,?/:;<=>@[\092]^_{}~\177\t\ "
输出

define FLUSH while

它在一个
printf
中显示三个单词,而不是一次显示一个单词。

好的,您不必在delim字符串中转义空格。我很惊讶你的编译器没有警告你。你在DELIMS字符串末尾的空格之前有。不需要它。您认为\092是什么?您可能需要重新考虑并使用\\。现在,您无意中在分隔符列表中隐藏了一个nullchar\0(或者在我看来是这样)。只是为了好玩,把空格移到delim字符串的开头,然后试试。我建议你以批判的态度对待你的信息来源。您链接的页面可能使用也可能不使用与C兼容的符号。请阅读一些有关字符串文字的C文档。如果所有其他操作都失败,请尝试打印
strlen('\092')
define FLUSH while