如何将指针从 strtok 转换为字符串?

How to convert pointers from strtok to strings?

例如:

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() 来获取整数)。

为了简要回答您的问题,上面的代码应如下所示:

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 会在它看到您的标记之一的任何地方放置一个 '[=11=]' 字符。如果您打算在之后使用 input 字符串,则需要将其复制一份以传递给 strtok。