不兼容的类型错误

时间:2014-03-20 17:52:35

标签: c arrays string incompatibletypeerror

main()
{
FILE *fin;
char line[50];
char exp[SIZE];
fin=fopen("prefix.txt","r");

if(fin==NULL)
{
     printf("\nFile Cannot be Opened\n");              
}
else
{
        printf("\nfile opened\n");

       while(fgets(line, sizeof(line), fin)!=NULL)
       {
              sscanf(line, "%s", exp);

              exp=delete_spaces(exp);
       }    
}
fclose(fin);
getch();   
}

char delete_spaces(char a[])
{
   int l,k=0,i=0;
   l=strlen(a);

   while(i<l)
   {
        if(a[i]==' ')
        i++ 
        else
        a[k++]=a[i++];    
   } 
   return a;    
}

编译完这个程序后,我收到错误&#34;兼容性类型错误&#34; 在行中包含&#34; exp = delete_spaces(exp);&#34;我不知道如何删除它。 数组传递是否存在问题?

1 个答案:

答案 0 :(得分:0)

在这里,您将调用delete_spaces(exp)中的数组地址传递给delete_spaces(char a []),因此您无需获取返回值并将其指定为

exp=delete_spaces(exp);

而是将功能定义更改为,

void delete_spaces(char a[]);

和函数调用

delete_spaces(exp);

并且还在main()之前放置了函数的定义或原型。并从delete_spaces()定义中删除return语句。

并且delete_spaces()的代码将是

void delete_spaces( char a[])
{
    int l,k=0,i=0;
   l=strlen(a);

   while(i<l)
   {
        if(a[i]==' ')
        i++; 
        else
        a[k++]=a[i++];    
   } 
   a[k]='\0';
}