c语言中怎样写删除字符串中某个字符的程序啊?
rt,各位大神帮帮忙,就是voiddelete_string(charstr(),charch)该怎么写,希望每一步有注解...
rt,各位大神帮帮忙,就是void delete_string(char str(),char ch)该怎么写,希望每一步有注解
展开
6个回答
展开全部
1、编写头函数,包括“#include <stdio.h>.”与“#include <string.h>.“。
2、定义两个相同容量的字符串储存的变量 char a【100】; char b【100】。以及整数变量 int c;int i=0,j=0;其中a[100]是存字符串的,b【100】是存你删除对应字符的字符串的,整数C是想删除第几位。j ,i 是后面for循坏中要使用到的变量。
3、编写printf(“请输入你的字符串”);scanf(“%s”,a);printf(“请输入你想要删除第几位字符”);scanf(“%d”,&c)。
这几行代码主要是显示界面,以及具体想要删除什么字符串以及具体删除第几位字符使用的。
4、继续编写for(i=0;i<strlen(a);i++) ( if(i+1!=c){ b【j】=a【i】; j++;)( printf(" %s",b);)。
这几行代码逻辑语句是:只要当i+1不等于c时把a【i】里面的字符赋给b【i】,那么这样当i+1=c时不把它赋给b【i】从而实现删除功能。
5、程序编辑完毕,可以进行删除字符了。
展开全部
#include<stdio.h>
void delete_string(char *str,char ch){
int i,L;
L=strlen(str); //字符串长度
for (i=L-1;i>=0;i--){ //从后往前找
if (str[i]==ch) strcpy(&str[i],&str[i+1]); //找到一个,就把后面字符串往前推1格(就删了1个)。
}
}
main(){
char s[]="abmc1m23mXYZm"; // 原字符串
delete_string(s,'m'); // 调用,删去 m
printf("%s",s); //结果
return 0;
}
void delete_string(char *str,char ch){
int i,L;
L=strlen(str); //字符串长度
for (i=L-1;i>=0;i--){ //从后往前找
if (str[i]==ch) strcpy(&str[i],&str[i+1]); //找到一个,就把后面字符串往前推1格(就删了1个)。
}
}
main(){
char s[]="abmc1m23mXYZm"; // 原字符串
delete_string(s,'m'); // 调用,删去 m
printf("%s",s); //结果
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void move_t(char str[],int i){
int k;
for (k=i;str[k]!=null;k++){
str[k]=str[k++];
}
}
void delete_string(char str[],char ch){
int i=0;
int flag=1;
while(flag){
if (!str[i]){
flag=0;
break;
}
move_f(str,i); //用来找到的字符之后将字符之后的字符往前移一个
}
}
程序手机打的,不一定对,你按照这个思路来写(我强烈建议你这个程序自己动手写一遍!):
1:遍历找到需要的字符;
2:如果找到字符的话那么就调用move_t()函数用来将这个字符后的字符往前一个来达到删除该字符的效果(原因是对于字符数组是没有删除一个字符的函数或者功能,只能通过移动来达到删除!知道这一点自己动手写程序就简单了!)
int k;
for (k=i;str[k]!=null;k++){
str[k]=str[k++];
}
}
void delete_string(char str[],char ch){
int i=0;
int flag=1;
while(flag){
if (!str[i]){
flag=0;
break;
}
move_f(str,i); //用来找到的字符之后将字符之后的字符往前移一个
}
}
程序手机打的,不一定对,你按照这个思路来写(我强烈建议你这个程序自己动手写一遍!):
1:遍历找到需要的字符;
2:如果找到字符的话那么就调用move_t()函数用来将这个字符后的字符往前一个来达到删除该字符的效果(原因是对于字符数组是没有删除一个字符的函数或者功能,只能通过移动来达到删除!知道这一点自己动手写程序就简单了!)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
void delete_string(char *str,char ch)
{
int i,j=0,l=0;
char *p=str;
//将所有的字符ch都用'\0'来替换,用l记录字符串的长度
while(*p)
{
l++;
if(*p==ch) *p='\0';
p++;
}
//定位到第一个'\0'处
while(str[j]!='\0' && j<l) j++;
//将后面的字符往前移
i=j+1;
while(i<l)
{
if(str[i]!='\0')
str[j++]=str[i++];
else
i++;
}
//添加字符串结束符
str[j]='\0';
}
void main()
{
char str[] = "esdesfdsfeee";
delete_string(str, 'e');
printf("%s\n",str);
}
void delete_string(char *str,char ch)
{
int i,j=0,l=0;
char *p=str;
//将所有的字符ch都用'\0'来替换,用l记录字符串的长度
while(*p)
{
l++;
if(*p==ch) *p='\0';
p++;
}
//定位到第一个'\0'处
while(str[j]!='\0' && j<l) j++;
//将后面的字符往前移
i=j+1;
while(i<l)
{
if(str[i]!='\0')
str[j++]=str[i++];
else
i++;
}
//添加字符串结束符
str[j]='\0';
}
void main()
{
char str[] = "esdesfdsfeee";
delete_string(str, 'e');
printf("%s\n",str);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-12-23 · 知道合伙人宗教行家
关注
展开全部
#include<stdio.h>
void delete_string(char *str,char ch){
int i,L;
L=strlen(str); //字符串长度
for (i=L-1;i>=0;i--){ //从后往前找
if (str[i]==ch) strcpy(&str[i],&str[i+1]); //找到一个,就把后面字符串往前推1格(就删了1个)。
}
}
main(){
char s[]="abmc1m23mXYZm"; // 原字符串
delete_string(s,'m'); // 调用,删去 m
printf("%s",s); //结果
return 0;
}
void delete_string(char *str,char ch){
int i,L;
L=strlen(str); //字符串长度
for (i=L-1;i>=0;i--){ //从后往前找
if (str[i]==ch) strcpy(&str[i],&str[i+1]); //找到一个,就把后面字符串往前推1格(就删了1个)。
}
}
main(){
char s[]="abmc1m23mXYZm"; // 原字符串
delete_string(s,'m'); // 调用,删去 m
printf("%s",s); //结果
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询