鱼C论坛

 找回密码
 立即注册
查看: 1088|回复: 4

[已解决]小白求助

[复制链接]
发表于 2020-3-28 18:23:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本题要求实现一个删除字符串中的指定字符的简单函数。
函数接口定义:
void delchar( char *str, char c );


其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。
裁判测试程序样例:
#include <stdio.h>
#define MAXN 20

void delchar( char *str, char c );
//void ReadString( char s[] ); /* 由裁判实现,略去不表 */
int main()
{
    char str[MAXN], c;

    scanf("%c\n", &c);
    gets(str);
    delchar(str, c);
    printf("%s\n", str);

    return 0;
}

/* 你的代码将被嵌在这里 */


我的:

void delchar( char *str, char c ){
    int k=0;
    for(;*str!='\0';str++){
        if(*str!=c){
            str[k]=*str;
            k++;
        }
    }
    str[k]='\0';
}

请问这个方法哪里有问题?
最佳答案
2020-3-28 19:12:44
void delchar( char *str, char c ){
    int k=0;
    char *ch;
    ch = str;
        for(;*ch!='\0';ch++){
        if(*ch!=c){
            str[k]=*ch;
            k++;
        }
    }
    str[k]='\0';
}
我修改后的,我加了一个使用指针的值这样你在循环的时候就不会对指针改变了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-28 19:26:02 | 显示全部楼层
void delchar( char *str, char c ){
    int k=0;
    char *s=str;
    for(;*str!='\0';str++){
        if(*str!=c){
            *s=*str;
            s++;
        }
    }
    *s=*str;
}


我也用指针做了通过了,我想问一下各位大神为什么用数组str[k]不行?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-28 18:44:28 | 显示全部楼层
str[k]=*str;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-28 18:52:39 | 显示全部楼层
#include <stdio.h>

void delchar(char *s, char c) {
        char *p = s;
        char *q = s;
        while(*q = *p++) {
                if(*q != c) ++q;
        }
}

int main(void) {
        char str[] = "ab:12:cd:34";
        delchar(str, ':');
        printf("%s\n", str);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-28 19:12:44 | 显示全部楼层    本楼为最佳答案   
void delchar( char *str, char c ){
    int k=0;
    char *ch;
    ch = str;
        for(;*ch!='\0';ch++){
        if(*ch!=c){
            str[k]=*ch;
            k++;
        }
    }
    str[k]='\0';
}
我修改后的,我加了一个使用指针的值这样你在循环的时候就不会对指针改变了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 17:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表