不兼容类型错误 main() { 文件*fin; 字符行[50]; charexp[SIZE]; fin=fopen(“prefix.txt”、“r”); 如果(fin==NULL) { printf(“\n无法打开文件\n”); } 其他的 { printf(“\n打开的文件\n”); while(fgets(line,sizeof(line),fin)!=NULL) { sscanf(行“%s”,exp); exp=删除_空格(exp); } } 财务总监(财务); getch(); } char delete_空格(char a[] { int l,k=0,i=0; l=斯特伦(a); 虽然(i
这里,您正在传递数组地址以删除call delete_spaces(exp)中的_spaces(char a[]),因此您不需要获取返回值并将其赋值为不兼容类型错误 main() { 文件*fin; 字符行[50]; charexp[SIZE]; fin=fopen(“prefix.txt”、“r”); 如果(fin==NULL) { printf(“\n无法打开文件\n”); } 其他的 { printf(“\n打开的文件\n”); while(fgets(line,sizeof(line),fin)!=NULL) { sscanf(行“%s”,exp); exp=删除_空格(exp); } } 财务总监(财务); getch(); } char delete_空格(char a[] { int l,k=0,i=0; l=斯特伦(a); 虽然(i,c,arrays,string,incompatibletypeerror,C,Arrays,String,Incompatibletypeerror,这里,您正在传递数组地址以删除call delete_spaces(exp)中的_spaces(char a[]),因此您不需要获取返回值并将其赋值为 main() { FILE *fin; char line[50]; char exp[SIZE]; fin=fopen("prefix.txt","r"); if(fin==NULL) { printf("\nFile Cannot be Opened\n"); } else { prin
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;
}
相反,将函数定义更改为
exp=delete_spaces(exp);
和函数调用
void delete_spaces(char a[]);
并将函数的定义或原型置于main()之前,并从delete_spaces()定义中删除return语句
delete_spaces()的代码将是
void delete_空格(char a[]
{
int l,k=0,i=0;
l=斯特伦(a);
当(i@user39495好的。我更改了答案,检查一下。这可能会有帮助。是的,它正在工作,但早些时候为什么不工作working@user39495它不起作用,因为exp是一个字符数组,在C字符[]中和char*不一样。阅读或相关问题以了解一些想法。上面的函数delete_spaces接受任何数组并删除字符之间的空格,上面的代码可以工作吗???@user39495 ya它可以工作,但添加一个[k]='\0'。检查我添加到答案中的代码。这可能会对您有所帮助
delete_spaces(exp);
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';
}