#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')
答案 0 :(得分:2)
c
定义为char
," "
是“字符串”文字,在C中实现为char
s的数组,衰减到指向它的第一个元素的指针,即char *
。
要解决此问题,请将c
与char
进行比较。
if (c != ' ') /* Use ' to code a char literal, use " to code a string literal. "/
同样,当您将fgetc()
的结果分配给c
并针对c
(通常为EOF
)测试-1
时,请c
一个int
,即使其返回fgetc()
类型。
答案 1 :(得分:-1)
您将char
与char *
进行比较。您无法执行此操作,并将c
设置为signed char
,因为它需要存储EOF
。这取决于编译器char
将signed
或unsigned
,因此您无法知道。
它必须是这样的:
if(c!= ' ')
{
a[i][j]=c;
j++;
}