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()
,但出现错误'warning: assignment makes pointer from integer without a cast'
。我想将a
,b
,c
ed
存储在非指针数组中,因此以后可以更改它们。如何将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'
字符。如果打算在之后使用input
字符串,则需要它的副本才能传递到strtok。