C : assignment makes integer from pointer without a cast 中的类型转换警告

标签 c pointers

我正在尝试从用户那里获取输入,但我不知道输入的确切长度,因此我正在使用 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 类型。 pchar* 类型。

这就是编译器所提示的。 从您使用 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/

相关文章:

c - 在 C 中返回一个 Char 数组

C - 读取并存储数据文件以供进一步计算

c - 从 C 中另一个函数的指针获取输入

c - 在 C 中的 for 循环中打印一次

c - 从以子字符串开头的单词中删除子字符串。(C 语言)

c++ - 为什么字符数组与指针和数组的处理方式不同?

c - C 中与指针的奇怪交互

c++ - 使用 RAW 套接字读取 ICMP 响应

c - 从结构中的指针访问结构的值

c - 指针指向的字符串在哪里/如何存储在文件中?