如何将指针从 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
c
和 d
是整数。当我使用 strtok() 时,损坏的字符串存储在 4 个指针(str[0]
到 str[3]
)中,它们是不可变的。我需要将它们存储在一个数组中,之后我可以在其中更改整数。我会使用 atoi()
但我收到错误 'warning: assignment makes pointer from integer without a cast'
。我想将 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 会在它看到您的标记之一的任何地方放置一个 '[=11=]'
字符。如果您打算在之后使用 input
字符串,则需要将其复制一份以传递给 strtok。
例如:
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
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。