c语言去掉空格
㈠ c语言删除空格键
涨姿势啦, %*c格式符之前见都没见过,竟然表示跳过一个字符!
按你的代码逻辑在for循环中,首先读入一个字符,然后跳过一个字符,所以结果就是读入的是输入字符串的第奇数个字符:
对 aglh zhg zghh来说第奇数个字符分别是: a,l,空格,h,空格,g,h,刚好是输出的几个字符。
要删除输入字符中的空格不应该用%*c, 而应该读入后判断读入的字符是否为空格,如果是空格则继续,否则才将其赋值到数组内。
#include<stdio.h>
intmain()
{
chara[20],c;
inti=0;
while(i<20)
{
scanf("%c",&c);
if(c=='')
continue;
a[i++]=c;
printf("%c",c);
}
return0;
}
㈡ c语言 字符串去掉空格
通过来gets输入字符串后就开始遍自历字符串,如果字符不是空格直接输出并向后遍历,如果是空格输出一个空格,并向后遍历直到不是空格为止,不作输出处理。
参考代码:
#include<stdio.h>
int main()
{
int i;
char a[100];
gets(a);
for(i=0;a[i]!='\0';){
if(a[i]==' '){//如果是空格输出一个空格,并向后遍历直到不是空格为止,中间不输出
printf(" ");
while(a[i]==' ') i++;
}
else{//如果字符不是空格直接输出并向后遍历
printf("%c",a[i]);
i++;
}
}
printf("\n");
return 0;
}
/*
输出:
I am a teacher
I am a teacher
*/
㈢ C语言删除字符串中的所有空格
把fun中的*str==*p;改成*str=*p;。
㈣ 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);
}
(4)c语言去掉空格扩展阅读:
1、for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。
“;”号之间的条件表达式是一个关系表达式,其为循环的正式开端,当条件表达式成立时执行中间循环体。
2、if语句中的“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式。其中最直观、最容易理解的是关系表达式。所谓关系表达式就是两个数值进行比较的式子。
㈤ C语言删除空格问题
对源字符串进行逐一字符自己向自己拷贝操作,遇到空格时跳过即可完成。举例代回码答如下:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
intmain(void){
charstr[]="Moonlightisinbrontofmybed.1234567890";
inti,j;
for(j=i=0;str[i];i++)
if(str[i]!='')
str[j++]=str[i];
str[j]='