网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月23日
漏签
0
天
c语言吧
关注:
792,906
贴子:
4,314,425
看贴
图片
吧主推荐
视频
游戏
23
回复贴,共
1
页
<<返回c语言吧
>0< 加载中...
这是什么错
只看楼主
收藏
回复
千鹤雪关扉
异能力者
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
本来想做个函数实现Python里面的string[lbk]start:end[rbk]这样的字符串或列表的裁剪,明明编译器也没报错,可为啥结果是这样的
还可以继续水
团子家族
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好像返回值有个俗称:野指针。
XeO2
马猴烧酒
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这个函数的设计完全不符合C的哲学,至于有什么错,嗯……说实话真的找不出一个对的地方。
如果“裁剪字符串”允许对原有字符串进行破坏性操作,那么extract可以这么写:
char *extract(char *str, int start, int end)
{
int len=0;
while(str[len] && len<end) len++;
len-=start;
memmove(str, str+start, len);
str[len]='\0';
return str;
}
如果不允许修改传入的字符串,可以这样:
char *extract(const char *str, int start, int end)
{
int len=0;
while(str[len] && len<end) len++;
len-=start;
char *slice=malloc(len+1);
memcpy(slice, str, len);
slice[len]='\0';
return slice;
}
这里假设start和end指代一个左开右闭区间,而且start从0开始
Kolkas
帕秋莉糕
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
一行流
贴吧用户_zero
强能力者
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
先学C++吧...C语言数据结构贫乏
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示