一道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;
}
求高手解答,错在哪里?感激不尽!急啊~~~ 展开
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中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
参考资料来源:百度百科-字符串
真的是太感谢了!!!再多问一句,怎么把后随的空白符删除呢?我上面这段代码里没有写到………
我正想告诉你,你的这个程序后随的空白符没删干净,还留了一个