我正在尝试从用户那里获取输入,但我不知道输入的确切长度,因此我正在使用 malloc,我正在按字符之间的空格拆分字符,只需要打印一个数组,但我收到警告,即赋值从指针生成整数,而无需在以下行中进行强制转换:
array[i++] = p;
我的整个程序如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main ()
{
char buf[] ="abc qwe ccd";
int i;
char *p;
char *array=malloc(sizeof(char));
i = 0;
p = strtok (buf," ");
while (p != NULL)
{
array[i++] = p;
p = strtok (NULL, " ");
}
for (i=0;i<3; ++i)
printf("%s\n", array[i]);
return 0;
}
谁能告诉我我的代码有什么问题。 谢谢。
最佳答案
下面的赋值不对。
array[i++] = p;
array[i++]
计算出 char
类型。 p
是 char*
类型。
这就是编译器所提示的。
从您使用 array
的方式来看,它需要是 char**
类型。
char **array = malloc(sizeof(*array)*20); // Make it large enough for your needs.
关于C : assignment makes integer from pointer without a cast 中的类型转换警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35859600/