如何将指针从strtok转换为字符串? [关闭]

问题描述 投票:-1回答:1
例如:

int main(){ char *str[4]; char data[]="abcd:3:4:5"; str[0]=strtok(data,":"); str[1]=strtok(NULL,":"); str[2]=strtok(NULL,":"); str[3]=strtok(NULL,":"); return 0; }

在输入"abcd:3:4:5"上,a是字符串,b cd是整数。当我使用strtok()时,损坏的字符串存储在4个指针(str[0]str[3])中,这是不可变的。我需要将它们存储在数组中,然后可以在其中更改整数。我会使用atoi(),但出现错误'warning: assignment makes pointer from integer without a cast'。我想将abc e d存储在非指针数组中,因此以后可以更改它们。如何将char*转换为char(之后,我将在字符串上仅使用atoi()来获取整数)。 
c pointers char atoi
1个回答
1
投票
为了简要回答您的问题,以上代码应如下所示:

char input[] = "abcd:18:04:12"; char* p1 = strtok(input, ":"); char* p2 = strtok(NULL, ":"); char* p3 = strtok(NULL, ":"); char* p4 = strtok(NULL, ":"); int val1 = atoi(p2); int val2 = atoi(p3); int val3 = atoi(p4); // and now you can do something with val1, val2 and val3

请注意,strtok会在看到令牌之一的位置放置一个'\0'字符。如果打算在之后使用input字符串,则需要它的副本才能传递到strtok。
© www.soinside.com 2019 - 2024. All rights reserved.