C 练习实例32
题目:删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。
程序分析:无。
实例
// Created by study.p2hp.com on 15/11/9.
// Copyright © 2015年 高手教程. All rights reserved.
//
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
// 删除字符串中指定字母函数
char* deleteCharacters(char * str, char * charSet)
{
int hash [256];
if(NULL == charSet)
return str;
for(int i = 0; i < 256; i++)
hash[i] = 0;
for(int i = 0; i < strlen(charSet); i++)
hash[charSet[i]] = 1;
int currentIndex = 0;
for(int i = 0; i < strlen(str); i++)
{
if(!hash[str[i]])
str[currentIndex++] = str[i];
}
str[currentIndex] = '\0';
return str;
}
int main()
{
char s[2] = "a"; // 要删除的字母
char s2[5] = "aca"; // 目标字符串
printf("%s\n", deleteCharacters(s2, s));
return 0;
}
以上实例输出结果为:
c
C 语言经典100例



叮咚
a12***59648z@qq.com
参考解法:
#include<stdio.h> #include<string.h> int main() { char c[1000]; printf("请输入原始字符串: \n"); fgets(c, (sizeof c / sizeof c[0]), stdin); char d; printf("请输入要删除的字符: \n"); scanf("%c",&d); char e[1000]; int j=0; getchar(); int i=0; while(i<strlen(c)) { if(c[i]!=d){ e[j]=c[i]; j++; } i++; } printf("删除后字符串: \n"); for(int z=0;z<j;z++) { printf("%c",e[z]); } printf("\n"); }叮咚
a12***59648z@qq.com
Jinlaips
jin***ps@qq.com
参考方法:
#include <stdio.h> int main(void) { char ch; int i, j; char s[] = "I want to learn English."; puts(s); printf("请输入要删除的字母: "); scanf("%c", &ch); for (i = 0; s[i] != '\0'; i++) { if (s[i] == ch) { for (j = i; s[j] != '\0'; j++) { s[j] = s[j + 1]; } s[j] = '\0'; } } puts(s); return 0; }Jinlaips
jin***ps@qq.com
南珂007
182***4224@qq.com
参考方法:
/* 删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。 */ #include<stdio.h> #include<strings.h> #include<string.h> int main() { char c;//要删的字符 int i=0; int j; int len; char bzo;//清空缓存 char buf[20]; bzero(buf,20); printf("Input a strings \n"); scanf("%s",buf); while((c=getchar())!='\n');//清空缓存 printf("Input a char:\n"); scanf("%c",&c); while(i!=strlen(buf)) { if(c==buf[i]) { for(j=i;j<strlen(buf);j++) { buf[j]=buf[j+1];//用后面的一个替换当前一个 } i--;//回到当前的一个 } i++; } if(buf[strlen(buf)-1]==c)//判断最后一个 { buf[strlen(buf)-1]='\0'; } printf("%s\n",buf); return 0; }南珂007
182***4224@qq.com
Eric
wxp***4@163.com
参考方法:
#include <stdio.h> #include <string.h> int main() { char s[128] = {0}, s1[128] = {0}, ch; int i = 0, j = 0; printf("请输入字符串:"); fgets(s, (sizeof s / sizeof s[0]), stdin); printf("请输入要删除的字符:"); scanf("%c", &ch); for (i = 0; i < strlen(s); i++) { if (s[i] == ch) continue; s1[j++] = s[i]; } puts(s); puts(s1); return 0; }Eric
wxp***4@163.com