为什么我得到“赋值从没有强制转换的整数指针”?

时间:2012-12-20 20:29:51

标签: c arrays pointers

  

可能重复:
  assignment makes pointer from integer without a cast
  assignment makes pointer from integer without a cast

我正在学习C并且有点挣扎。我正在编写一个程序,循环遍历一系列问题并填充一系列答案。我一直收到以下警告:

/var/Cprograms/quiz.c|24|warning: assignment makes pointer from integer without a cast [enabled by default]|

我仍然试图掌握指针的使用,我可能完全错误地使用它们,但这就是我在这里学习的原因。因此,我需要帮助确定我在第24行上做错了什么才能让程序正常工作并最终让它打印出答案。这是迄今为止的代码

#include <stdio.h>

/*
Yes or no Question Quiz:
get answers from command prompt
and print answers at end of session
using pointers
*/

/* char *gets(char *s) */

void loopQuiz (void)
 {
     char *questions[] = {"Is true == true?", "Is 0 == 1?", "Does water have atleast 3 phases?", "Is C a programming language?"};
     char *answers[3];


     int i = 0;
     int count = sizeof(questions) / sizeof(int);

     do
      {
          printf("%s \n", questions[i]);
          answers[i] = getchar();
          i++;
      }
     while (i < count);

    /*print function to go here*/
 }



int main (void)
 {
     loopQuiz();
     return 0;
 }

3 个答案:

答案 0 :(得分:3)

char *answers[3];

answers是一个指向char的3指针数组。

answers[i] = getchar();

尝试将int分配给answers[i]。你的类型错了。 getchar会将unsigned char转换为int(除非您点击EOF),所以您想要的是......

char answers[3];

答案 1 :(得分:2)

(你欠我一笔捐款,直到你的代码中的第24行......)

问题在于这一行:

answers[i] = getchar();

由于answerschar *的数组,但是您为其中一个成员分配了int(返回值getchar()),这是一个无效的分配。我不明白你期望做什么,但这肯定是错的。您需要将char *分配给answers[i]

答案 2 :(得分:1)

answers[i] = getchar();

getchar()会返回int,但

char *answers[3];

answers被声明为一个指针数组,因此您可以在不进行转换的情况下为指针指定一个整数,就像错误消息所示。