首页 > 解决方案 > 执行此程序时,char 函数会返回变量。我不知道为什么?

问题描述

在程序中,findnumber 函数获取数组元素和要通过 STDIN 搜索的值。我期望的输出是,如果该值等于数组中的任何一个元素,它会显示“是”或“否”。

#include<stdio.h>
#include<string.h>
char findNumber(int,int[],int);``
int main()
{
    int n,a[10],s;
    char c;
    c=findNumber(n,a,s);
    printf("%s",c);
    return 0;
}
char findNumber(int arr_count, int arr[], int k) 
{
   int i=0,j,flag;
   char y="YES";
   char N="NO";
   scanf("%d",&arr_count);
   scanf("%d",&k);
   for (j=0;j<arr_count;j++)
   {
      scanf("%d",&arr[j]);
   }
   while(i<arr_count)
   {
      if(arr[i]==k)
         flag=1;
      i++;
   }
   if(flag==1)
      return y;
   else
      return N;
}

警告:从 'char *' 初始化 'char' 从指针生成整数而无需强制转换 [-Wint-conversion] char y="YES"; 警告:从 'char *' 初始化 'char' 使指针变成整数而无需强制转换 [-Wint-conversion] char N="NO";

标签: c

解决方案


"YES"or这样的字符串常量"NO"是一个字符数组,而不是单个字符,因此您不能将它们存储在char.

您需要声明yn因此char *它们可以指向字符串常量并相应地更改函数的返回类型。

const char *findNumber(int arr_count, int arr[], int k) 
{
    const char *y="YES";
    const char *N="NO";
    ...

推荐阅读