错误:指针和整数之间的比较

时间:2015-02-15 13:40:18

标签: c

#include<stdio.h>
#include<string.h>
int main(int argc,char *argv[])
{
char c;
char a[19][100];
int i=0;
int j=0;

while((c=fgetc(stdin))!=EOF)
{
  if(c!=" ")
  {
    a[i][j]=c;
    j++;
   }
   if(c==" "||c=='\n')
{
   a[i][j]='\0';
   i++;
   j=0;
    }
 }
 for(j=0;j<i;j++)
printf("%s \n",a[j]);
}

我得到的错误是

   15.c:12:5: warning: comparison between pointer and integer[enabled       by   default]

 if(c!=" ")
     ^

15.c:17:5: warning: comparison between pointer and integer [enabled by   default]

if(c==" "||c=='\n')

2 个答案:

答案 0 :(得分:2)

c定义为char" "是“字符串”文字,在C中实现为char s的数组,衰减到指向它的第一个元素的指针,即char *

要解决此问题,请将cchar进行比较。

if (c != ' ')  /* Use ' to code a char literal, use " to code a string literal. "/

同样,当您将fgetc()的结果分配给c并针对c(通常为EOF)测试-1时,请c一个int,即使其返回fgetc()类型。

答案 1 :(得分:-1)

您将charchar *进行比较。您无法执行此操作,并将c设置为signed char,因为它需要存储EOF。这取决于编译器charsignedunsigned,因此您无法知道。 它必须是这样的:

if(c!= ' ')
  {
    a[i][j]=c;
    j++;
   }