一道C语言题:整理字符串,将字符串中前导和后随的空白符删除,字符串中间连续的多个空白符只保留一个,

一道C语言题:(用指针不用函数,在主函数内完成)整理字符串,将字符串中前导和后随的空白符删除,字符串中间连续的多个空白符只保留一个,去掉多余的空白符。我的代码是这样写的:... 一道C语言题:(用指针不用函数,在主函数内完成)整理字符串,将字符串中前导和后随的空白符删除,字符串中间连续的多个空白符只保留一个,去掉多余的空白符。
我的代码是这样写的:
#include<stdio.h>
int main()
{
char s[250],*p=s,*q=s;
printf("Enter a string!\n");
gets(s);
while(*p=' ')
p++;
while(*p){
if(*p=' '){
*q++=*p++;
for(;*p=' '&&*p;p++);
}
else
*q++=*p++;
}
*q='\0';
printf("%s\n",s);
return 0;
}
求高手解答,错在哪里?感激不尽!急啊~~~
展开
 我来答
帐号已注销
2020-11-26 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:167万
展开全部

char str1[20],str2[20]

int i,j;

scanf("%s",str1);

for(i=0,j=0;i<=19;i++,j++)

{

if(str[i]!==' ') str2[j]==str1[i];

if(str[i]==' ') j--;

}

printf("%s",str2);

或:

#include<stdio.h>

void trim_sp(char *str){

int len,i,j;

len = strlen(str);

while (str[len-1] == ' ') len--;

str[len] = '\0';

i=0;

while (str[i] == ' ') i++;

for(j=0;j<=len-i;j++) str[j]=str[j+i];

}

void main ()

{

char str[] = " abcd kkk hhh jjjj ";

trim_sp(str);

printf("|%s|\n",str);

}

扩展资料:

字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。

通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

参考资料来源:百度百科-字符串

井宜7M
2018-11-10
知道答主
回答量:1
采纳率:0%
帮助的人:809
展开全部
我想问一下*p和*q表示什么呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
这个名有人取了
2015-04-23 · TA获得超过685个赞
知道小有建树答主
回答量:311
采纳率:100%
帮助的人:305万
展开全部
代码写得很漂亮,怎么就犯了低级错误呢,,==写成了=,不止一处哦~
更多追问追答
追问
真的是太感谢了!!!再多问一句,怎么把后随的空白符删除呢?我上面这段代码里没有写到………
追答
我正想告诉你,你的这个程序后随的空白符没删干净,还留了一个
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式