#include?stdio.h
創(chuàng)新互聯(lián)是一家專業(yè)提供邊壩企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計、成都做網(wǎng)站、H5建站、小程序制作等業(yè)務(wù)。10年已為邊壩眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進行中。
void?fun(char?*s){
int?i,j;
for(i=0;s[i]='a'??s[i]='z'?||?s[i]='A'??s[i]='Z'?||?s[i]='0'??s[i]='9';i++);
for(s[j=0]=s[i++];s[i];i++)
if(!(s[i]='a'??s[i]='z'?||?s[i]='A'??s[i]='Z'?||?s[i]='0'??s[i]='9')??s[i]-s[j])
s[++j]=s[i];
s[j+1]='\0';
}
int?main(int?argc,char?*argv[]){
char?s[81];
printf("Input?a?string...\ns=");
fgets(s,81,stdin);
fun(s);
printf("%s",s);
return?0;
}
#include stdio.h
void Deld(char *str)
{
char tmp[100];
int i,j=0;
for (i=0;str[i];i++)
if (str[i]= 'a'str[i]='z'||str[i]='A'str[i]='Z') //刪除字母,若是數(shù)字,改為='9'='0'
tmp[j++] = str[i];
tmp[j] = '\0';
for (i=0;tmp[i];i++)
str[i] = tmp[i];
str[i] = '\0';
}
void main()
{
char str[111] = "hello world!";
Deld(str);
printf("%s",stsr);
}
結(jié)果出來了,你看看吧,滿意請采納
#include?stdio.h
#include?string.h
void?finddd(char?x[]);
int?main()
{
char?a[150];
char?*aa;
int?a1;
int?i;
printf("請輸入任意的字符串:?");
gets(a);
finddd(a);
return?0;
}
void?finddd(char?x[])???????//?不帶數(shù)據(jù)返回?
{
int??i,shu=0;
char?aa[100];???????????????
int??aaa[200]={0};
for(i=0;istrlen(x);i++)
{
if(aaa[?x[i]?]?==?0)
{
aaa[?x[i]?]?=?1;
aa[shu++]=x[i];
}
}
aa[shu++]='\0';
printf("剔除重復(fù)字符后的字符串:?%s\n",aa);
}
可以根據(jù)字符的ASCII碼值來判斷字符是否是字母,之后將非字母字符存放到另一個字符串數(shù)組中,即可達到刪除字符串中字母的目的。
具體實現(xiàn)方法可以參考如下程序:
#includestdio.h
#includectype.h??//?isalpha函數(shù)的頭文件
void?main()
{
char?*str1=(char?*)malloc(50*sizeof(char));??//?定義字符指針str1,并申請內(nèi)存空間,存放用戶輸入的字符串,最大50個字符
char?*str2;??//?存放去掉字母后的字符串
int?i=0;
scanf("%s",?str1);??//?接收用戶輸入的字符串
str2?=?(char?*)malloc(sizeof(str1));
while(*str1?!=?'\0')
{
if(!isalpha(*str1))??//?如果不是字母字符,則存放于str2字符串中
{
*(str2+i)?=?*str1;
i++;
}
str1++;
}
*(str2+i)='\0';??//?將str2末尾字符置結(jié)束字符標志
printf("%s\n",?str2);?//?輸出去掉字母后的字符串
}
我也試了一下,沒問題,你到底是什么問題,是要在s1或s2中輸入空格嗎?那么用gets函數(shù);
gets()函數(shù)用來從標準輸入設(shè)備(鍵盤)讀取字符串直到換行符結(jié)束,但換行符會被丟棄,然后在末尾添加'\0'字符。
其調(diào)用格式為:gets(s);
其中s為字符串變量(字符串數(shù)組名或字符串指針)。
gets(s)函數(shù)與scanf("%s:",s)/*scanf("%s",s)*/相似,但不完全相同,使用scanf("%s",s);函數(shù)輸入字符串時存在一個問題,就是如果輸入了空格會認為字符串結(jié)束,空格后的字符將作為下一個輸入項處理,但gets()函數(shù)將接收輸入的整個字符串直到遇到換行為止。
你改為:
#includestdio.h
voidmain()
{chars1[50],s2[50];
gets(s1);
gets(s2);
printf("%s\n",s1);
printf("%s\n",s2);
}
這樣就用回車表示輸入結(jié)束
void?fun(char?a[],?int?len)
{
int?i,?j=0;
char?*str?=?(char?*)malloc(sizeof(char)*(len+1));
for(i=0;?ilen;?++i)
{
if(('1'=a[i]??a[i]='9')?||?('a'=a[i]??a[i]='z')?||('A'=a[i]??a[i]='Z'))
str[j++]?=?a[i];????????
}
str[j]?=?'\0';
strcpy(a,?str);
free(str);
}