【发布时间】:2020-03-29 14:55:07
【问题描述】:
例如:
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() 来获取整数)。
【问题讨论】:
-
如果您不显示导致错误的说明,我们将无法帮助您修复它们...函数
atoi可以直接用于从strtok返回的值。跨度> -
你能把代码贴在你使用
atoi()的地方吗?如果我们没有看到它,我们不能说什么。此外,您不会“将字符串存储到指针中”,指针具有存储字符串的地址。 -
当我使用 strtok() 时,损坏的字符串存储在 4 个指针中(str[0] 到 str[3]),它们是不可变的 你所说的“不变”?这些指针指向您的
data字符串中的内存,而您的data字符串不是不可变的——如果是,strtok()将失败。 -
str[0]指向可变字符。str[0][1] = '%';是合法的。