3473|14

7996

帖子

54

资源

裸片初长成(中级)

【C标准库里那些好玩的题目】strlen那个题目的清晰说明 + 偶滴一种实现 [复制链接]

 
本帖最后由 辛昕 于 2017-9-27 11:43 编辑

上一个贴,大家都反映没看懂。
我看了一下那个b数组,也是给它搞死。遂,出一个完整的题目和说明

一个char型数组,去掉里面所有的 0x00字节。
例如
原数组
0x32,0x01,0x00,0x32,0x33,0x00,0x00,0x32,0x64,0x02,0x00,0x32,0x00

期望得到的结果是
0x32,0x01,0x32,0x33,0x32,0x64,0x02,0x32

此帖出自编程基础论坛
个人签名

八年一梦,洗尽铅华,重头再来


回复

6074

帖子

206

资源

版主

还有一点要说明,是在原数组上修改,还是得到另外一个新的数组?
个人签名

EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,上班摸鱼场,释放压力好地方!商家勿入!加群暗号:喵


回复

6074

帖子

206

资源

版主

说实话,我非常喜欢教主出的一些小题目。。。
  1. #include <stdio.h>

  2. int filter(unsigned char* a, int len) {
  3.     unsigned char *p =a, *q = a, *e = a+len;
  4.     while(q != e && ((*q && (*p++ = *q++)) || q++));
  5.     return p-a;
  6. }

  7. int main(int argc, const char * argv[]) {
  8.     unsigned char a[] = {0x32,0x01,0x00,0x32,0x33,0x00,0x00,0x32,0x64,0x02,0x00,0x32,0x00};
  9.     int n = filter(a, sizeof(a));
  10.     for(int i=0; i<n; i++) {
  11.         printf("%2x ", a[i]);
  12.     }
  13.     return 0;
  14. }
复制代码

个人签名

EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,上班摸鱼场,释放压力好地方!商家勿入!加群暗号:喵


回复

6926

帖子

17

资源

版主

lcofjp 发表于 2017-9-25 18:05
说实话,我非常喜欢教主出的一些小题目。。。
[code]#include

int filter(unsigned cha ...

队长牛逼
个人签名training

回复

7996

帖子

54

资源

裸片初长成(中级)

lcofjp 发表于 2017-9-25 18:05
说实话,我非常喜欢教主出的一些小题目。。。
[code]#include

int filter(unsigned cha ...

while里那条件很酷炫。虽然看20s没看懂.........
貌似这是最基本的一种方法

好,继续............

等待下一个答案
个人签名

八年一梦,洗尽铅华,重头再来


回复

1455

帖子

1

资源

纯净的硅(中级)

lcofjp 发表于 2017-9-25 18:05
说实话,我非常喜欢教主出的一些小题目。。。
[code]#include

int filter(unsigned cha ...

够骚~
个人签名HELLO_WATER

回复

127

帖子

0

资源

版主

我来捣个乱,哈哈,python
import numpy as np
a = np.array([0x32,0x01,0x00,0x32,0x33,0x00,0x00,0x32,0x64,0x02,0x00,0x32,0x00])
b = a[a!=0]
嘿嘿,淫荡吧

回复

7996

帖子

54

资源

裸片初长成(中级)

风过琴弦 发表于 2017-9-26 22:06
我来捣个乱,哈哈,python
import numpy as np
a = np.array([0x32,0x01,0x00,0x32,0x33,0x00,0x00,0x32, ...

看不懂的路过.............
个人签名

八年一梦,洗尽铅华,重头再来


回复

368

帖子

1

资源

一粒金砂(高级)

风过琴弦 发表于 2017-9-26 22:06
我来捣个乱,哈哈,python
import numpy as np
a = np.array([0x32,0x01,0x00,0x32,0x33,0x00,0x00,0x32, ...

life is short

回复

6074

帖子

206

资源

版主

风过琴弦 发表于 2017-9-26 22:06
我来捣个乱,哈哈,python
import numpy as np
a = np.array([0x32,0x01,0x00,0x32,0x33,0x00,0x00,0x32, ...

你用numpy感觉有点杀鸡用牛刀了,用原生数组的过滤功能感觉更简单易懂,当然用numpy显得更高大上,不过用python本身就是坦克大炮了,直接用浏览器的控制台窗口这种小米+步枪的方式也是可以的:
淫荡.png
用惯了高级语言,再去用C语言真的想吐,高级语言代码至少一行顶10行C代码,而且不用考虑各种没有意义且容易出错的细节问题,能更快的解决实际问题,化代码为生产力。C和C++真正的噩梦是内存管理,只不过搞单片机很少接触这东西,所以没感觉到C语言真正的痛点
个人签名

EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,上班摸鱼场,释放压力好地方!商家勿入!加群暗号:喵


回复

127

帖子

0

资源

版主

lcofjp 发表于 2017-9-27 01:55
你用numpy感觉有点杀鸡用牛刀了,用原生数组的过滤功能感觉更简单易懂,当然用numpy显得更高大上,不过用 ...

你这个我也看不懂。。。浏览器内置的,是js的解释器?

回复

6074

帖子

206

资源

版主

风过琴弦 发表于 2017-9-27 09:09
你这个我也看不懂。。。浏览器内置的,是js的解释器?

嗯,javascript控制台
个人签名

EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,上班摸鱼场,释放压力好地方!商家勿入!加群暗号:喵


回复

7996

帖子

54

资源

裸片初长成(中级)

  1. #include <stdio.h>
  2. #include <string.h>

  3. // TODO:这个实现,对于出现连续几个0的情况无法解决
  4. void rid_zero_strlen_way(char *src,char *dest)
  5. {
  6.         char *p;
  7.         size_t len;
  8.        
  9.         p = src;

  10.        while(p != NULL)
  11.         {
  12.                 len = strlen(p);
  13.                   
  14.                                    printf("len:%ld\n",len);
  15.         
  16.                 if(len != 0)
  17.                 {
  18.                         memcpy(dest,p,len);
  19.                         dest += len;
  20.                         p += len + 1;
  21.                 }
  22.                 else
  23.                          break;
  24.         }
  25. }

  26. int main(void)
  27. {
  28.            char src[13] = {0x32,0x00,0x51,0x74,0x00,0x12,0x4a,0x00,0x1a,0x43,0x00,0x32};
  29.     char dest[32];   //32长度是随意的;
  30.         int i;

  31.         for(i = 0;i < 13;i++)
  32.                         printf("0x%02x\t\t",src[i]);
  33.                
  34.     rid_zero_strlen_way(src,dest);
  35.    
  36.         for(i = 0;i < strlen(dest);i++)
  37.                         printf("0x%02x\t\t",dest[i]);

  38. }
复制代码
个人签名

八年一梦,洗尽铅华,重头再来


回复

6074

帖子

206

资源

版主

辛昕 发表于 2017-9-27 11:41
[code]#include
#include

// TODO:这个实现,对于出现连续几个0的情况无法解决
void  ...

心服口服!
个人签名

EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,上班摸鱼场,释放压力好地方!商家勿入!加群暗号:喵


回复

7996

帖子

54

资源

裸片初长成(中级)


服啥,这其实是个很弱鸡的东西
就是觉得好玩
个人签名

八年一梦,洗尽铅华,重头再来


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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表