你的代码存在几个问题导致报错:
1. 函数声明的语法错误:
char[] deblank(char *deschar[]),应该为
char* deblank(char *deschar)。
2. 字符串比较的错误:
if (*deschar != " "),应该使用单引号来表示字符
' ',即
if (*deschar != ' ')。
3. 字符赋值的错误:
returnshuzu[i] = " ",应该使用单引号来表示字符,即
returnshuzu[i] = ' '。
4. 返回数组指针的错误:函数
deblank 的返回类型应该为
char*,而不是
char[]。
以下是修改后的代码:
- #include <stdio.h>
- #include <stdlib.h>
- char* deblank(char *deschar)
- {
- char returnshuzu[100] = {};
- int i = 0;
- int one_stop = 1;
- while (*deschar != '\0')
- {
- if (*deschar != ' ')
- {
- returnshuzu[i] = *deschar;
- one_stop = 1;
- }
- else if (*deschar == ' ' && one_stop)
- {
- returnshuzu[i] = ' ';
- one_stop = 0;
- }
- deschar++;
- i++;
- }
- return returnshuzu;
- }
- int main()
- {
- char a[] = "js jfiwefka fjfsd fsfjfji sf sfj";
- printf("%s", deblank(a));
- return 0;
- }
复制代码
这样修改后的代码能够消除空格并输出结果。但请注意,由于
returnshuzu 是在函数
deblank 中定义的局部变量,函数执行结束后其内存将被释放,因此返回指向该局部变量的指针是不安全的。如果需要返回一个字符串,建议使用动态分配内存,并在使用完毕后手动释放内存。
球一个最佳答案谢谢啦!这对我非常重要!

