追梦少年_66 发表于 2017-12-13 11:45

用最小的循环,写出从一个字符串中删除一个字符的函数

用最小的循环,写出从一个字符串中删除一个字符的函数。
哥12行代码就能搞定,一个循环。想不想挑战一下

追梦少年_66 发表于 2017-12-13 12:59

本帖最后由 追梦少年_66 于 2017-12-13 13:00 编辑


void deleteallchar(char *str, char findstr) {
      int i = 0, j = 0;
      while ((str =str) {
                if (str != findstr) {
                        i++;
                }
      }                                       
}

cc20911 发表于 2017-12-14 21:29

//不损坏源字符串
char* delch(char* src, unsigned int srcLen, char findch)
{
        char str;//栈空间,不能用于大弄字符串
        for (int i = 0, j = 0; i < srcLen + 1; i++)
        {
                if (src != findch)
                        str = src;
        }
        return str;
}

//不保留源字符串
void delch(char* src, char findch){
        int i = 0, j = 0;
        while (src)
        {
                if (src != findch)
                        ++j;
                else
                        src = src;
        }
               
}

追梦少年_66 发表于 2017-12-13 11:49

删除第一个字符如hello world 变为hell world
删除所有字符如hello world 变为hell wrld

追梦少年_66 发表于 2017-12-13 11:52

不使用系统的字符串库函数

小飞鸟 发表于 2017-12-13 11:58

一行代码搞定。。你需要12行?

追梦少年_66 发表于 2017-12-13 12:09

小飞鸟 发表于 2017-12-13 11:58
一行代码搞定。。你需要12行?

哈哈哈,那就算啊字符吧

laoxing 发表于 2017-12-13 12:19

厉害了求看源码

SeriousSnow 发表于 2017-12-13 12:30

#include <stdio.h>
#include <malloc.h>

#define STRMAX 1024

char * function(const char * str, char ch)
{
        char * res = malloc(STRMAX);
        int index = 0;
        for (int i = 0; str; i++)
                res == ch ? index : index++] = str;
        res = 0;
        return res;
}


int main(int argc, char * argv[])
{
        char str = "Hello World!";
        printf_s("%s\n", function(str, 'o'));

        getchar();

        return 0;
}

实现这功能的函数不是很简单的么。。。。。

苏紫方璇 发表于 2017-12-13 12:33

感觉代码还能精简,不如楼主放代码吧
char a[] = "hello world";
        char *b = a;
        char *c = a;
        while (*b!=0)
        {
                if (*b=='o')
                {
                        b++;
                }
                else
                {
                        *c++ = *b++;
                }
        }
        *c = 0;
        printf("%s", a);

追梦少年_66 发表于 2017-12-13 12:58

本帖最后由 追梦少年_66 于 2017-12-13 13:04 编辑

不错不错,你这是删掉了所有的o
你的代码可以装逼为:

看下面
页: [1] 2
查看完整版本: 用最小的循环,写出从一个字符串中删除一个字符的函数