Strtok返回错误的数据

时间:2019-01-22 10:46:32

标签: c arrays string strtok

我在strtok()上遇到了一个奇怪的问题,我想知道您是否可以向我解释问题所在。这只是一个测试程序,以查看是否可以将字符'//分配给变量,以便以后可以运行一些代码。

(具体来说,我的目的是识别用户何时要运行终端命令,因此为确保该命令正确,我想使用/作为第一个字符,因此我可以{ {1}}剩下的字符串)

无论如何,这是我的代码。

system()

结果各不相同,#include <stdio.h> int main() { char msg[256]; fgets(msg,256,stdin); char character[256]; character[0] = strtok(msg,"/"); printf("\n%c --> this is the output", character[0]); return 0; } 可能会打印为空,字母printf()q,字符a或无法识别的字符。

!

1 个答案:

答案 0 :(得分:1)

阅读man pagestrtok()返回一个指针,而不是char

  

strtok()strtok_r()函数返回指向下一个标记的指针,如果没有更多标记,则返回NULL

您不能将指针分配给char变量。

也就是说,代码没有执行应有的功能。 strtok()返回指向 next 令牌的指针,它不包含定界符。

  

每次调用strtok()都会返回一个指向以空值结尾的字符串的指针,该字符串包含下一个标记。该字符串不包含定界字节。 [...]

相反,您可能需要查看 strchr()