gpt4 book ai didi

c - 导致不需要的变量被修改的 strcpy 函数

转载 作者:太空宇宙 更新时间:2023-11-04 00:29:23 26 4
gpt4 key购买 nike

抱歉,如果它太基础了,但我无法解决它。当我执行 strcpy 时,我会在更改后立即获得其他变量。

//global
char incomingData[250] = {0}; //data is never exceeds 50.

然后 incomingData 被数据填充并且..

handleIncomingData(incomingData);

void handleIncomingData(char *incoming)
{
parseGetRespondHeader(incoming); //also strcpy strings into "incoming"
char *header = strtok (incoming,":");
char *dataA=strtok (NULL, ":");
char *dataB=strtok (NULL, ":");

if(strstr(header, PROTOCOL_SET_WIFI_CONNECTION ) != NULL)
{
if(checkConnection(dataA,dataB))
strcpy(incoming,"connected"); // REMOVING THIS LINE SOLVES IT

标记的行导致其他不相关的指针更改它们的值(该行之前和之后的 var 不同)

checkConnection 函数没有对 dataAdataB 做任何事情

最佳答案

strtok() 不会创建新的分配。 dataA 指向(过去)第一个':' in incoming 的地方,dataB 指向(过去)第二个':'

strcpy(incoming, "connected") 如果您的第一个标记(由 header 指向)比 strlen 短,则将覆盖 dataA(可能还有 dataB) (“已连接”)

关于c - 导致不需要的变量被修改的 strcpy 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33238296/

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