|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 13256068488 于 2019-4-22 20:11 编辑
程序要求:输入字符串的里面若含有“kusa”,则删除最初出现的“kusa”,然后输出原字符串与删除后的字符串。如果没有“kusa”就直接输出输入的内容。
在linux程序下执行。可以正确输出结果 不过会有munmap_chunk:invalid poiter错误,然后程序中止。自己是初学,所以指针哪里用发错了。有知道的可以帮忙指正一下吗
ps:因为是学校布置的作业。所以main函数不可以修改。
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- char* remove_kusa(char lyric[]) {
-
- char *p ;
-
- char temp_kusa[] = "kusa";
- char* result;
- int position;
- char *fore,*aft;
- result = strstr(lyric,temp_kusa);
- if (result == NULL)
- p = lyric;
- else
- {
- position = result - lyric;
- lyric[position] = '\0';
- fore = &lyric[0];
- aft = &lyric[position+4];
- p = strcat(fore,aft);
- }
- return p;
- }
- int main(int argc, char *argv[]) {
- char *lyric = argv[1];
- char *removed;
- printf("%s\n", lyric);
- removed = remove_kusa(lyric);
- printf("%s\n", removed);
- free(removed);
- }
复制代码
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- char *remove_kusa(char lyric[])
- {
- char *result;
- char *str = malloc(strlen(lyric) + 1);
- strcpy(str, lyric);
- if ((result = strstr(str, "kusa")) != NULL)
- {
- str[result - str] = '\0';
- strcat(str, result + 4);
- }
- return str;
- }
- int main(int argc, char *argv[])
- {
- char *lyric = argv[1];
- char *removed;
- printf("%s\n", lyric);
- removed = remove_kusa(lyric);
- printf("%s\n", removed);
- free(removed);
- return 0;
- }
复制代码
|
|