【问题标题】:Creating an Integer Array and terminating with a blank创建一个整数数组并以空格结尾
【发布时间】:2014-05-28 01:34:21
【问题描述】:

我正在编写一个程序,该程序涉及一次请求用户输入一个随机数量的整数,该输入在用户返回空白后终止。然后将这些整数放入一个数组中,稍后我将使用该数组对整数进行排序。该程序基本上运行如下:

Enter a list of integers:
> 5
> 0
> 3
>4

等...直到用户输入一个空白。然后程序对整数进行排序并打印出来。

我的sn-p代码是:

static int GetIntegerArray(int array[], int max)
{
   int n, value;

   n = 0;

   while(1) {
       printf("> ");
       value = GetInteger();
       if (value == "") break;
       if (n == max) Error("Too many input items for array");
       array[n] = value;
       n++;
   }
   return(n);
}

我收到错误“警告:指针和整数之间的比较”,其中 value == ""

元素的数量是随机的,我将可能元素的最大数量设置为 1000 以说明这一点。

编辑:知道了!!完全忽略了必须将空格读取为字符串。只需将其更改为最初将输入读取为字符串,如果没有输入空格,则将输入转换为整数。谢谢!

【问题讨论】:

  • 您正在尝试将 char * ("") 与 int (value) 进行比较,这是您无法做到的。你必须让GetInteger() 改为返回char *

标签: c arrays


【解决方案1】:

在您的代码中,值定义为 int。您不能将 int 与字符串(是否为空)进行比较。因此,对您关于编译器为何抱怨的问题的严格回答是由于字符指针和 int 之间的类型不匹配。

您需要的帮助位于 GetInteger() 函数的文档中。当没有提供用户输入时,该函数返回什么?将 'value' 与该返回值进行比较,就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 2023-03-16
    相关资源
    最近更新 更多