当前位置:首页 » 编程语言 » c语言删掉多个空格
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言删掉多个空格

发布时间: 2023-03-29 23:03:12

1. c语言 输入一个字符串,删除中间多余的空格

可以参考下面的代码:

#include "stdio.h"

void main()

{

char s[]="I am a teacher!";

int i,j;

for(i=0;s[i];i++)

{

if(s[i]==32&&s[i+1]==32)/*如果字符串中第i和i+1个是空格,就运行if中的语句*/

for(j=i;s[j];j++) {s[j]=s[j+1];i=0;}/*此句是把2个空格换成一个,然后把空格之后的内容前移*/

}

printf("%s ",s);

}

(1)c语言删掉多个空格扩展阅读:

1、for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。

“;”号之间的条件表达式是一个关系表达式,其为循环的正式开端,当条件表达式成立时执行中间循环体。

2、if语句中的“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式。其中最直观、最容易理解的是关系表达式。所谓关系表达式就是两个数值进行比较的式子。

2. c语言 输入一个字符串,删除该字符串中的所有空格并输出处理后的字符串

int main()

{

char s[1024],c[1024];

int len,n=0,i;

char p,q;

p=s;q=c;

printf(“请输入字符串的长度:”);

scanf("%d",&len);

printf(“请输入一串字符串:”);

for(i=0;i<len+1;i++)

{

scanf("%c",p+i);

}

for(i=0;i<len+1;i++)

{

if((p+i)>=48&&(p+i)<=57||(p+i)>=97&&(p+i)<=122)

{

(q+n)=(p+i);

n++;

}

}

for(i=0;i<n+1;i++)

{

printf("%c",*(q+i));

}

}

c语言编程技巧

1、函数参数

在设计函数时,通常将目的参数放在前面,源参数放在后面。若可能,通过IN、OUT这样的宏定义来标注参数输入输出。

如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。

2、函数中内存处理

(1)在函数中分配的内存,在函数退出之前要释放

(2)return语句不可返回指向“栈内存”的指针或者引用,因为该内存在函数体结束时被自动销毁。

3. C语言删除字符串中的所有空格

其余没什么问题。
*str==*p;改为 *str=*p; 也就是==改为=

4. c语言怎么删除多出的空格

从0下标开始,一个字符一个字符地自己向自己拷贝,当拷入一个空格时,将后面的空格跳过去。设置2个初值为0的变量i和j,i用来控制遍历原字符串数组,j用来记录新拷入的字符位置,用下面的代码就可实现!

//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
intmain(void){
charstr[1000];
inti,j;
gets(str);
for(j=i=0;str[i];i++){
if((str[j++]=str[i])==''){//自己向自己拷贝,直到遇见''
for(i++;str[i]=='';i++);//遇到''跳过后面的''
i--;
}
}
str[j]='';//补个结束符
printf("%s ",str);//打出来看看
return0;
}

5. C语言完善程序,删除字符串中的所有空格

*p='\0'或则str[i]='\0'的意思还得从上面的那个循环开始说起,while(*P)何时才为假吗?必须当p指向字符串的结尾标志才行,也就是p指向了'\0',于是*p=0,于是循环退出,循环里面就是把空格去掉,这里的去掉的方法是把以前空格的位置用*p对其赋值,*P的值是空格后的字符,例如ab
cd
efg'\0'后来会变为abcdefg为什么这里没有'\0',那是因为还没来得及赋值给它就已经退出循环了,所以必须再循环后面加个'\0'。字符串一定要有'\0'做结尾标志,这个就不用说了

6. c语言怎么删除多出的空格

/*
*

string
内的
连续多个指定的字符去重(多个消减为1个)
*
*
注意
:
string被修改,不可重入
*/
static
inline
char
*str_rece(char
*string,
int
ch)
{
char
*p
=
string;
/*
记录指针
*/
char
*s
=
string;
/*
扫描指针
*/
BOOL
in_rece
=
FALSE;
/*
rece
模式
*/
while(*s)
{
if
(ch==*s)
{
/*
*
扫描到
ch,
则记录之
*
*
(1)
进入
rece
模式
*
(2)
p
不动,保证只记录一次
ch,即达到
rece
效果
*/
in_rece
=
TRUE;
*p
=
*s++;
}
else
{
/*
*
扫描到正常数据(非
ch)
*
*
如果当前是
rece
模式
*
(1)
p
走一步,完成
rece,为记录正常数据做准备
*
(2)
退出
rece
模式
*/
if
(in_rece)
{
p++;
in_rece
=
FALSE;
}
/*
*
记录正常数据
*/
*p++
=
*s++;
}
}
*p
=
0;
/*
丢弃尾部
冗余
*/
return
string;
}

7. C语言程序设计删除空格

遍历字符串,遇到空格,即进行删除。

可以使用第二个字符数组来保存结果,对空格不复制;也可以不使用第二个字符数组,而是采用后续字符覆盖空格字符的方式,达到删除效果。

以效率更高的第二种方法为例,代码如下:

voiddel_space(char*s)
{
char*p=s;
do{
if(*s!='')*p++=*s;
}while(*s++);
}