吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3272|回复: 18
收起左侧

[C&C++ 转载] 用最小的循环,写出从一个字符串中删除一个字符的函数

[复制链接]
追梦少年_66 发表于 2017-12-13 11:45
用最小的循环,写出从一个字符串中删除一个字符的函数。
哥12行代码就能搞定,一个循环。想不想挑战一下

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 追梦少年_66 发表于 2017-12-13 12:59
本帖最后由 追梦少年_66 于 2017-12-13 13:00 编辑

[Asm] 纯文本查看 复制代码
void deleteallchar(char *str, char findstr) {
        int i = 0, j = 0;
        while ((str[i] =str[j++]) {
                if (str[i] != findstr) {
                        i++;
                }
        }                                        
}

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
苏紫方璇 + 1 + 1 用心讨论,共获提升!
q879757088 + 1 + 1 我很赞同!

查看全部评分

cc20911 发表于 2017-12-14 21:29
[C++] 纯文本查看 复制代码
//不损坏源字符串
char* delch(char* src, unsigned int srcLen, char findch)
{
	char str[srcLen];//栈空间,不能用于大弄字符串
	for (int i = 0, j = 0; i < srcLen + 1; i++)
	{
		if (src[i] != findch)
			str[j++] = src[i];
	}
	return str;
}

//不保留源字符串
void delch(char* src, char findch){
	int i = 0, j = 0;
	while (src[i])
	{
		if (src[i] != findch)
			++j;
		else
			src[i++] = src[j++];
	}
		
}
 楼主| 追梦少年_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
[C] 纯文本查看 复制代码
#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]; i++)
		res[str[i] == ch ? index : index++] = str[i];
	res[index] = 0;
	return res;
}


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

	getchar();

	return 0;
}


实现这功能的函数不是很简单的么。。。。。
苏紫方璇 发表于 2017-12-13 12:33
感觉代码还能精简,不如楼主放代码吧
[C] 纯文本查看 复制代码
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
你的代码可以装逼为:

看下面
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-14 15:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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