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