帮我看看我的代码,哪里错了呢?

1、第二个函数就是实现把一个字符串里的空格全部去掉的功能,然后主函数里面调用它,但是实现不了,比如我输入he llo,他全部打印出来,里面的空格没有去掉,求解释。
2、88行跟89行表达的意思不是一样的吗?为什么我用88行的就不行?每次都打印出来字母d。
3、上面注释了的函数跟下面的函数功能是不是一样的?
4、p = str + strle(str) - 1;这句我知道是让p指针指到字符串的最后面,但不知道是怎么实现的,最好能举个例子解释一下,谢谢了!

第1个回答  2015-01-08
1、第二个函数后半段有问题;
2、88行跟89行表达的意思是不一样的,前者输入一个字符,后者输入一串字符;
3、上面注释了的函数跟下面的函数功能是不一样的,前者删除字符串两端的空格,而后者试图删除字符串中所有的空格(但未能实现);
4、str是字符串起始位置,strle(str)是字符串长度,p = str + strle(str) - 1;所以p指向字符串最后一个字符。追问

能不能直接说哪里有问题或者把你写的代码发出来给我看看,我不会啊

本回答被网友采纳
第2个回答  推荐于2016-02-13
1.isspace的用法 //isspace是测试参数是否是空格、制表符或换行符的函数,所以它不只是会判断空格
2.很明显不一样啊,一个输的的字符,一个输的是字符串!而scanf("%s",a);它会将空格作为结束标志,所以你输he llo;其实它只接受了he
 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
char *Trimstring(char *str)
{
char *p = NULL;
int i,j;
for(i = 0; str[i] != '\0'; i++)
{
if(str[i] == ' ')
{
for(j = i; str[j] != '\0'; j++)
{
str[j] = str[j+1];
}
}
}

return str;
}
int main()
{
char a[100];
// scanf("%s",a);
gets(a);
char *p = NULL;
p = Trimstring(a);
printf("%s\n",a);
return 0;
}

追问

上面Trimstring函数能用isspace函数实现吗,如果用要怎么实现好?

本回答被提问者采纳
第3个回答  2015-01-08
Trimstring 函数两个循环都有问题追问

求正确代码

第4个回答  2015-01-08
%c是当个字符,应该用%s,
相似回答