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

C 如何将指针从strtok转换为字符串?,c,pointers,char,atoi,C,Pointers,Char,Atoi,例如: 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是字符串,bc和d是整数。使用strtok()时,断开的字符串存储在4个指针(str[0]到str[3])中,这些指针是不可

例如:

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
c
d
是整数。使用strtok()时,断开的字符串存储在4个指针(
str[0]
str[3]
)中,这些指针是不可变的。我需要将它们存储在一个数组中,在那里我可以在以后更改整数。我会使用
atoi()
,但我得到了错误
“警告:赋值从整数生成指针而不进行强制转换”
。我想将
a
b
c
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将在任何看到您的令牌的地方放置一个
'\0'
字符。如果您打算在之后使用
输入
字符串,则需要将其副本传递给strtok。

如果您没有显示导致错误的说明,我们无法帮助您修复它们。。。函数
atoi
可以直接用于从
strtok
返回的值。您是否也可以将代码张贴在使用
atoi()
的位置?如果我们看不到,我们什么也说不出来。另外,您没有“将字符串存储到指针中”,指针具有字符串存储位置的地址。当我使用strtok()时,断开的字符串存储在4个指针(str[0]到str[3])中,这些指针是不可变的,您所说的“不可变”是什么意思?这些指针指向
数据
字符串中的内存,并且
数据
字符串不是不变的-如果是不变的,
strtok()
将失败。
str[0]
指向可变字符<代码>str[0][1]='%'是合法的。是的,我的错误是试图将整数存储在char*指针中。现在问题解决了。谢谢:)