C语言 初学者用一个指针删除字符串中的空格。。

初学者喔。。。别复杂喔!

第1个回答  2012-12-05
这个算法的思想是,用一个变量统计前面出现了多少个空格,把原字符串的第n+offset的值赋给新字符串的第n个字符。这样就能达成一次遍历就能在原字符串上修正的目的了。
#include <stdio.h>
#include <stdlib.h>

int main()
{
char *s=malloc(256);
char *p=s,offset=0;/*offset记录数据交换的间隔*/
printf("请输入一个字符串:\n");
fgets(s,256,stdin);
printf("去空格前:\n%s",s);
while(*p!='\0')
{
if(*p==' ')
offset++;
p++;
*(p-offset)=*p;
}
printf("去空格后:\n%s",s);
free(s);
return 0;
}追问

好复杂~
fgets(s,256,stdin);

free(s); 都看不懂~

追答

fgets表示从一个流中读取数据。stdin则指出这个流是输入流(就是你的按键输入的信息)。256那个参数是限制读入字符数量,最多读到256个字符后就终止,防止溢出的。这个函数比scanf的优越性就是,它能够读入空格。
free(s)是释放s指向的内存,s这个指针指向了一个字符串,如果程序员没有用free命令释放这块动态分配的内存,那么会发生内存泄漏。记住一点就行了,用malloc和realloc分配的内存要在不用时手动释放。

第2个回答  2012-12-05
定义一个指针 从第一个字符开始 判断所指的字符是否为空格 是则把后面的字符全部往前移 然后指针后移 再判断 一直循环下去直到指针所指字符为\0结束追问

是则把后面的字符全部往前移 然后指针后移 这个不会耶~~

本回答被网友采纳
第3个回答  2012-12-05
这个貌似有难度哦,因为scanf语句无法输入空格啊,一遇空格就停止了。
相似回答