执行此程序时,char函数返回变量。我不知道为什么?

时间:2019-02-13 13:30:53

标签: c

在程序中,findnumber函数获取数组元素和要通过STDIN搜索的值。我期望的输出是,如果该值等于数组中的任何元素,则显示YES或NO。

#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”;

1 个答案:

答案 0 :(得分:1)

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

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

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