关于strtok()的一些设置

时间:2017-09-10 10:25:13

标签: c strtok

这是我得到的警告:

passing argument 1 of ‘strtok’ discards ‘const’ qualifier from pointer target 
type [enabled by default]

我想禁用此默认操作,任何人都可以帮我这个吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

var formData = { name: 'TestDeck', description: 'This is a test deck for my api', private: 'FALSE', shareable: 'FALSE', ttsLanguages: [], blacklistedSideIndices: [], blacklistedQuestionTypes: [], gradingModes: [], imageAttribution: 'https://www.logogarden.com/wp-content/uploads/lg-index/Example-Logo-6.jpg', imageFile: fs.createReadStream('retext.png') } function createDeck(connection) { request.post({ url: '<url>', formData: formData }, function(err, resp, body) { }) } 就地工作:它需要对传递给它的字符串进行标记。

当然,你可以强迫非常规演员,但这会违反合同。如果调用者希望在您的操作后重新使用传递的字符串,该怎么办?所以这是不行的。

因此,如果您有一些常量字符串,则必须在使用前进行复制,例如使用strtok

strdup

最后,您将所有令牌放在单独的指针中,内存已由char *copy = strdup(my_const_char); toks = strtok(copy," ",NULL); ... 分配和保留。一旦您不再需要令牌,copy free就是您需要清理它的全部内容。

请注意,此const限定符问题的一般答案是:Passing Argument 1 discards qualifiers from pointer target type