关于strtok()的一些设置
About some settings of strtok()
这是我收到的警告:
passing argument 1 of ‘strtok’ discards ‘const’ qualifier from pointer target
type [enabled by default]
我想禁用此默认操作谁能帮我解决这个问题?
谢谢!
strtok
就地工作:它需要标记您传递给它的字符串。
当然,您可以强制进行非 const 转换,但这会违反合同。如果调用者希望在您的操作后重新使用传递的字符串怎么办?所以这是不行的。
所以如果你有一些常量字符串,你必须在使用它之前制作一个副本,例如使用 strdup
char *copy = strdup(my_const_char);
toks = strtok(copy," ",NULL);
...
最后,您将所有标记放在单独的指针中,内存已经分配并由 copy
持有。一旦您不再需要令牌,只需 free
ing copy
即可清理它。
请注意,此 const 限定符问题的一般答案是:Passing Argument 1 discards qualifiers from pointer target type
这是我收到的警告:
passing argument 1 of ‘strtok’ discards ‘const’ qualifier from pointer target
type [enabled by default]
我想禁用此默认操作谁能帮我解决这个问题?
谢谢!
strtok
就地工作:它需要标记您传递给它的字符串。
当然,您可以强制进行非 const 转换,但这会违反合同。如果调用者希望在您的操作后重新使用传递的字符串怎么办?所以这是不行的。
所以如果你有一些常量字符串,你必须在使用它之前制作一个副本,例如使用 strdup
char *copy = strdup(my_const_char);
toks = strtok(copy," ",NULL);
...
最后,您将所有标记放在单独的指针中,内存已经分配并由 copy
持有。一旦您不再需要令牌,只需 free
ing copy
即可清理它。
请注意,此 const 限定符问题的一般答案是:Passing Argument 1 discards qualifiers from pointer target type