警告:指针和整数之间的比较

时间:2015-12-09 11:40:25

标签: c

当我运行上面的标题时显示为错误

#include <stdio.h>
 int main()
 {
  int i;
  char name[20];
  printf("Enter name: ");
  scanf("%s",name);
  printf("Your name is %s",name);
  while(name[i]!="\0") 
  {
    i++;
    if(name[i]==" ")
    {
        strcpy(b[i],name[i]);
        printf("copied name: ");
        scanf("%s",b[i]);
    }
  }
}

当我运行它时显示此错误原因?警告:指针和整数之间的比较。

2 个答案:

答案 0 :(得分:1)

&#34; \ 0&#34;是一个字符串,&#39; \ 0&#39;是一个角色。在比较角色时,你需要后者。

此外,正如chqrlie所指出的,还有许多其他问题 - 您需要检查编译器警告/错误并将其全部修复。例如,

  • name[i]==" "出于同样的原因是错误的。
  • 在哪里宣布b
  • 其中i已初始化??

答案 1 :(得分:0)

您的代码中有许多错误/警告。

  1. 应为'\ 0'。不是“\ 0”;
  2. 您尚未声明b [];
  3. 初始化i = 0;
  4. 您可以使用下面代码中显示的其他方法代替strcpy。
  5. 此外,您不应该在最后一行使用scanf。你应该使用printf。 scanf用于从用户获取输入。 printf用于打印结果。
  6. 代码 -

    #include <stdio.h>
    int main()
    {
        int i=0,n;
        char name[20],b[20];
        printf("Enter name: ");
        scanf("%s",name);
        printf("Your name is %s\n",name);
        while(name[i]!='\0') 
        {
            b[i]=name[i];  // to copy from name[] to b[]. Instead of strcpy
             i++;
        }
        printf("copied name: ");
        for(n=0;n<=i;n++)
      {
          printf("%c",b[n]);  // to show the copied result.
      }
        printf("\n");
        return 0;
    }