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]='';
printf("AfterremovetheSpaces: %s ",str);//打出来看看...
return0;
}

㈥ c语言中把文件中的空格去除

第一种:使用位域限制读取的长度;

第二种:可以直接按照结构体来读写;

实例代码如下:

#include"stdafx.h"
#include<cstdio>
#include<cstdlib>
#include<cstring>

structRoommate{
charname[6];
charNO[8];
charaddr[10];
};


int_tmain(intargc,_TCHAR*argv[])
{
structRoommateRom[2]={0};
FILE*file=NULL;
if(!(file=fopen("a.txt","w"))){
printf("CreateFilefailed! ");
exit(-1);
}

printf(":NameNOAddr ");
for(inti=0;i<2;++i){
scanf("%s%s%s",Rom[0].name,Rom[0].NO,Rom[0].addr);
fwrite((constvoid*)&Rom[0],sizeof(structRoommate),1,file);
}
fclose(file);
/*Readfromfile*/
file=NULL;
if(!(file=fopen("a.txt","r"))){
printf("CreateFilefailed! ");
exit(-1);
}
printf("Readfromthefile:NameNOAddr ");
fread((void*)Rom,sizeof(structRoommate),2,file);
for(inti=0;i<2;++i){
printf("i=%dName:%s NO:%s Addr:%s ",i,Rom[i].name,Rom[i].NO,Rom[i].addr);
}
fclose(file);

while(getchar());
return0;
}

㈦ C语言中去掉空格问题

#include<string.h>
void trimspace(char *);
main()
{
char str[100];
gets(str);
trimspace(str);
puts(str);
}
/*------------Found Mistake Below------------*/
void trimspace(char *p)
{
char *q;
if(*p!='\0')
q=p+strlen(p)-1;
else
return;
/*------------Found Mistake Below------------*/
for(;*q==' ';q--);
*q='\0';
for(q=p;*q==' ';q++);
strcpy(p,q);
return;
}

㈧ C语言,删除字符串中的空格

#include <stdio.h>
int main(int argc, char *argv[])
{
char s[20] = "how are you";
int i, j;
for (i=0,j=0; s[i]!='\0'; i++)
{
if (s[i]!=' ')
{
s[j] = s[i];
printf("%c", s[j]);
j++;
}
}
s[j] = '\0';
printf("\n");
return 0;
}

㈨ 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;
}

㈩ C语言 空格删除

#include<stdio.h>
#include<string.h>
intstrdel(char*s);
intmain()
{
chara[100];
intn;
gets(a);
n=strdel(a);
puts(a);
printf("%d",n);
return0;
}
intstrdel(char*s)
{
inti,j=0,k=0,n;
char*p=s;
n=strlen(s);
for(i=0;i<n;i++)
{
权if(*(p+i)=='')
{
j++;
continue;
}
else
{
*(s+k)=*(p+i);
k++;
}
}
*(s+k)='';
returnj;
}