gpt4 book ai didi

c - strtok 进入字符数组未按预期工作

转载 作者:行者123 更新时间:2023-12-04 02:49:29 34 4
gpt4 key购买 nike

我是 C 编程的新手,目前正在努力使用 strtok。我想使用以下代码将一个字符串拆分为两个字符串(字符串是例如“Bat1:185”,分隔符是冒号):

char batName[13];
char batVoltage[3];
char *result = NULL;

result = strtok(pStringToSplit, pDelimiter);
strcpy(batName, result);

result = strtok(NULL, pDelimiter);
strcpy(batVoltage, result);

在第一次 strtok 调用 batName 后,batName 包含预期的值(“Bat1”),但在第二次 strtok batName 为空后,batVoltage 包含正确的值“185”。

我知道这段代码很弱,但目前我只是想了解 strtok 的基础知识。我已经花了很多时间寻找解决方案,但找不到任何解决方案。

非常感谢任何提示彼得

最佳答案

185 以 nul (\0) 字符结尾,实际上占用 4 个字符的空间。您的 nul 写在缓冲区外,似乎用字符串终止符覆盖了 batName 中的第一个字符。

严格来说,覆盖缓冲区是未定义的行为,因此这段代码实际上可以以任何方式运行,具体取决于编译器。

关于c - strtok 进入字符数组未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18078059/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com