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;我不知道如何删除它。 数组传递是否存在问题?
答案 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';
}