當前位置:首頁 » 編程語言 » 去掉多餘空格c語言PTA
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

去掉多餘空格c語言PTA

發布時間: 2023-06-18 12:08:03

c語言 字元串去掉空格

//修改如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

voidtrimSpace(char*instr,char*outstr){
inti=0;
intj=0;//因為去掉空格後的字元串的字元個數和去掉空格之前不一樣,需要額外增加一個變數用來標記下標。
for(i=0;i<(int)strlen(instr);i++)
{
if((int)(*(instr+i))==32)
{
continue;
}
else{
*(outstr+j)=*(instr+i);
j++;
}

printf("%c",*(outstr+i));//這個位置可以列印出來去掉空格之後的字元串

}

*(outstr+j)='';
printf("%s",*outstr);//這個位置再列印就是null了求解為什麼感謝

}

voidmain(){
char*p1="abcdefgdddd";
charp2[100]={0};
trimSpace(p1,p2);
//printf("%s",p2);
getchar();
}

② C語言,將數組中多餘的空格去除掉

你的程序是找到空格,就把空格全部移到數組開頭,因為你的last的初始值為0,而且把所有的功能寫在一個函數里的做法不好,我們應該盡可能的保證一個函數就是個原子操作。我改的程序如下

# include <stdio.h>

void move_array (char * a)
{
while(*(++a) != '\0')
*(a-1) = *a;
return;
}

int is_blank (char arg)
{
return (arg == ' ') ? 1 : 0;
}

void delete_blank (char * argv)
{
while (*(argv++) != '\0')
if(is_blank(*argv))
move_array(argv);
return;
}

int main(void)
{
char s[] = "he l lo world!";
printf("%s\n", s);
delete_blank(s);
printf("%s\n", s);
return 0;
}

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

④ C語言中去掉空格問題

/*去除字元串右邊空格*/
void
vs_strrtrim(char
*pstr)
{
char
*ptmp
=
pstr+strlen(pstr)-1;
while
(*ptmp
==
'
')
{
*ptmp
=
'\0';
ptmp--;
}
}
/*去除字元串左邊空格*/
void
vs_strltrim(char
*pstr)
{
char
*ptmp
=
pstr;
while
(*ptmp
==
'
')
{
ptmp++;
}
while(*ptmp
!=
'\0')
{
*pstr
=
*ptmp;
pstr++;
ptmp++;
}
*pstr
=
'\0';
}

⑤ 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 <stdio.h>

int main()

{

char *p="I am Chinese";

char c;

int i = 0;

while((c = p[i++])!=''){

if(c!=' ')

putchar(c);

}

}

(6)去掉多餘空格c語言PTA擴展閱讀:

字元串的函數應用

1. 連接運算 concat(s1,s2,s3…sn) 相當於s1+s2+s3+…+sn。

例:concat('11','aa')='11aa';

2. 求子串。 Copy(s,I,I) 從字元串s中截取第I個字元開始後的長度為l的子串。

例:(『abdag',2,3)='bda'

3. 刪除子串。過程 Delete(s,I,l) 從字元串s中刪除第I個字元開始後的長度為l的子串。

例:s:='abcde';delete(s,2,3);結果s:='ae'

4. 插入子串。 過程Insert(s1,s2,I) 把s1插入到s2的第I個位置。

例:s:=abc;insert('12',s,2);結果s:='a12bc'

5. 求字元串長度 length(s) 例:length('12abc')=5。

在ASP中 求字元串長度用 len(s)例: len("abc12")=5

6. 搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,則返回s1的第一個字元在s2中的位置,若不是子串,則返回0。

例:pos(『ab','12abcd')=3

網路-字元串

⑦ C語言如何去掉字元串的空格,用0表示去掉尾部空格,1去掉前部空格,2,表示去掉前後部空格

#include<stdio.h>
char*func0(char*s)
{
char*p;
for(p=s;*p;p++);
for(p--;*p=='';p--);
*--p='';
returns;
}
char*func1(char*s)
{
char*p,*q;
for(p=s;*p=='';p++);
for(q=s;*q++=*p++;);
returns;
}
intmain()
{
chars[100];
intn;
gets(s);
scanf("%d",&n);
switch(n)
{
case0:func0(s);break;
case1:func1(s);break;
case2:func1(func0(s));break;
default:break;
}
puts(s);
return0;
}