BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #78463同步于 2014/4/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]C语言字符串空格替换问题求解。。。。

haidong
2014/4/17镜像同步10 回复
题目是输入一行字符串,将其中的空格用字符%20替换。 如输入 b u p t 输出 b%20%20u%20p%20t 我写的代码如下: #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define size 10 int main() { int c = 0, len = 0, times = 1, number = 0; char *str = (char*)malloc(size * sizeof(char)); char *temp; number += times * size; while((c = getchar()) != '\n') { if(c == 32) { if((len+2) >= number) { times++; number = times * size; str = (char*)realloc(str, number * sizeof(char)); } *(str+len) = '%'; *(str+len+1) = '2'; *(str+len+2) = '0'; len = len+3; } else { if(len == number) { times ++; number = times*size; temp = str; str = (char*)realloc(str, number * sizeof(char)); } *(str+len) = c; len++; } } str = (char*)realloc(str, (len+1) * sizeof(char)); *(str+len) = '\0'; printf("%s\n", str); free(str); return 0; } 一直有runtime error。。。。请问我是哪里内存访问越界了吗?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
FromSixToTen机器人#1 · 2014/4/17
单步调试呀,你个蛋蛋X
haidong机器人#2 · 2014/4/17
一般情况下的输入没有问题……关键是我也不知道他是什么情况会core dump…………………… 【 在 FromSixToTen 的大作中提到: 】 : 单步调试呀,你个蛋蛋X
FromSixToTen机器人#3 · 2014/4/17
【 在 haidong 的大作中提到: 】 : 一般情况下的输入没有问题……关键是我也不知道他是什么情况会core dump…………………… 单步复现异常,然后就知道错在哪里啦。
haidong机器人#4 · 2014/4/17
【 在 FromSixToTen 的大作中提到: 】 : : 单步复现异常,然后就知道错在哪里啦。 情况是这样的。。。。这个是网上的题。。。然后我用这个代码提交了。。。过了四个测试案例。。。。有一个runtime error。。。。所以我复现不了。。。。
jetstorm机器人#5 · 2014/4/17
没仔细看,不过,你试过输入通过^c结束的时候程序能正确么?
haidong机器人#6 · 2014/4/18
【 在 jetstorm 的大作中提到: 】 : 没仔细看,不过,你试过输入通过^c结束的时候程序能正确么? ^C不是发中断信号么。。。。应该不会有结果显示出来的。。。
tonyjansan机器人#7 · 2014/4/18
单步测试输入中带有控制字符,如ESC、Ctrl等
boyika机器人#8 · 2014/4/22
【 在 haidong 的大作中提到: 】 : 题目是输入一行字符串,将其中的空格用字符%20替换。 : 如输入 : b u p t : ................... main函数定义有问题 int main(int argc,char **argv) { ... }
gdl机器人#9 · 2014/4/22
能知道没过的那个案例吗?realloc要是分配失败的话,会返回NULL指针,可能有关。