为什么我的代码无法将一个字符串复制到另一个字符串?

用户名

我想编写一个称为append()目标的C函数,该函数将在给定字符串的末尾附加一个字符。但是,由于某些与指针相关的问题,我无法使我的代码正常工作。

#include <stdio.h>

void append(char ** string, int length, char ch)
{
    printf("%s", string);

    char * newString = (char *) malloc(sizeof(char)*(length+2));

    strcpy(newString, string);

    newString[length ] = ch;
    newString[length + 1] = '\0';

    strcpy(string, newString);

    free(newString);
}

int main()
{
    char * string = "my1name234is56";
    append(string, strlen(string), 'x');

    printf("%s", string);
}

在函数内部append():第二个strcpy()free()给我一个例外,该程序显示:

Unhandled exception at 0x5E8D40D9 (msvcr120d.dll) in mips_2_1.exe: 
0xC0000005: Access violation writing location 0x00D1585C.

我也尝试过

strcpy(*string, newString);

strcpy(**string, newString);

而且,似乎没有任何效果。

strcpy(&string, newString);

似乎正在工作,但是最终结果不是我期望的。

编辑:我根据alk进行了编辑

#include <stdio.h>
#include <malloc.h>
#include <string.h>

void append(char ** string, int length, char ch)
{
    printf("%s\n\n", *string);

    char * newString = (char *)malloc(sizeof(char)*(length + 2));

    strcpy_s(newString, length+1, *string);

    newString[length] = ch;
    newString[length + 1] = '\0';

    strcpy_s(*string, length + 2, newString);

    *string = newString;
}

int main(void)
{
    char * string = "my1name234is56";
    append(&string, strlen(string), 'x');

    printf("%s", string);
}

它仍然无法正常工作。

Edit2:我根据“ Weather Vane进行了以下编辑

#include <stdio.h>
#include <malloc.h>
#include <string.h>

char * append(const char * string, int length, char ch)
{
    char * newString = (char *)malloc(sizeof(char)*(length + 5));

    printf("%s\n\n", string);

    strcpy_s(newString, length+5, string);

    newString[length] = ch;
    newString[length + 1] = '\0';

    return newString;
}

int main(void)
{
    char * string = "my1name234is56";

    printf("%s\n\n", string);

    char * string2 = append(string, strlen(string), 'x');

    printf("%s", string2);
}

现在,它正在工作。

Edit3:根据alk以下修改对我有用

#include <stdio.h>
#include <malloc.h>
#include <string.h>

void append(char ** string, int length, char ch)
{
    char * newString = (char *)malloc(sizeof(char)*(length + 2));

    strcpy_s(newString, length + 1, *string);

    newString[length] = ch;
    newString[length + 1] = '\0';

    *string = newString;
}

int main(void)
{
    char * string = "my1name234is56";

    printf("%s\n\n", string);

    append(&string, strlen(string), 'x');

    printf("%s\n\n", string);
}
ALK

你快到了。

不过,您需要将传入的指针的值更改为分配给内存的指针的值,而不是释放它。

下面仅显示已更改的行。

...

void append(char ** string, size_t length, char ch)
{
    printf("%s\n", *string);

    ...

    strcpy(newString, *string);

    ...

    *string = newString;
}

int main(void)
{
    ...
    append(&string, strlen(string), 'x');
    ...
}

顺便说一句,您不必传递源的大小,但是您可以通过执行轻松地在函数内部派生它strlen(*string)


对不完整的代码表示抱歉。看来,我是从坐在一个高度完整的代码泄漏检测系统后面发布答案的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么将空字符串复制到另一个字符串?

来自分类Dev

使用动态中的指针将一个字符串复制到另一个字符串

来自分类Dev

如何从一个字符串中一次读取两个字符并复制到另一个字符串中

来自分类Dev

如何将一个字符串快速复制到另一个字符串的一部分中?

来自分类Dev

使用指针将一个字符串复制到另一个字符串的程序不产生任何输出

来自分类Dev

是否有一个功能可以将一个字符的所有实例复制到另一个字符串的相同索引中?

来自分类Dev

如何将一个字符串数组存储到另一个字符串数组中?

来自分类Dev

将一个字符串与另一个字符串进行比较的最佳方法是什么?

来自分类Dev

如何将内容从一个字符串向量复制到另一个?

来自分类Dev

在bash脚本中将一个字符串覆盖时,为什么一个字符串会覆盖另一个字符串?

来自分类Dev

将一个字符串插入另一个

来自分类Dev

将字符串列表复制到另一个字符串列表

来自分类Dev

如何使用指针而不使用字符串库将字符数组复制到'c'中的另一个字符数组

来自分类Dev

C strcpy复制字符串并添加另一个字符

来自分类Dev

C strcpy复制字符串并添加另一个字符

来自分类Dev

在C编程中将一个字符串变量复制到另一个字符串变量时遇到问题

来自分类Dev

如何在Java中将某个单词从一个字符串复制到另一个字符串

来自分类Dev

在java中,如何在字符串中查找单词并将其复制到另一个字符串变量中?

来自分类Dev

计算一个字符串在另一个字符串中每个字符的出现次数

来自分类Dev

正则表达式从一个字符串到另一个字符串

来自分类Dev

查找一个字符串到另一个字符串程序的排列

来自分类Dev

从一个字符串数组到另一个字符串数组的strcpy

来自分类Dev

在字典上,一个字符串比另一个字符串大是什么意思?

来自分类Dev

将整数从一个字符串移动到另一个字符串?

来自分类Dev

使用C ++将一个字符串替换为另一个字符串

来自分类Dev

将整数从一个字符串移动到另一个字符串?

来自分类Dev

swift:如何将一个字符串从textField分配给另一个字符串?

来自分类Dev

如何将一个字符串值与另一个字符串值进行比较?

来自分类Dev

使用 PHP 将一个字符串与另一个字符串匹配

Related 相关文章

  1. 1

    什么将空字符串复制到另一个字符串?

  2. 2

    使用动态中的指针将一个字符串复制到另一个字符串

  3. 3

    如何从一个字符串中一次读取两个字符并复制到另一个字符串中

  4. 4

    如何将一个字符串快速复制到另一个字符串的一部分中?

  5. 5

    使用指针将一个字符串复制到另一个字符串的程序不产生任何输出

  6. 6

    是否有一个功能可以将一个字符的所有实例复制到另一个字符串的相同索引中?

  7. 7

    如何将一个字符串数组存储到另一个字符串数组中?

  8. 8

    将一个字符串与另一个字符串进行比较的最佳方法是什么?

  9. 9

    如何将内容从一个字符串向量复制到另一个?

  10. 10

    在bash脚本中将一个字符串覆盖时,为什么一个字符串会覆盖另一个字符串?

  11. 11

    将一个字符串插入另一个

  12. 12

    将字符串列表复制到另一个字符串列表

  13. 13

    如何使用指针而不使用字符串库将字符数组复制到'c'中的另一个字符数组

  14. 14

    C strcpy复制字符串并添加另一个字符

  15. 15

    C strcpy复制字符串并添加另一个字符

  16. 16

    在C编程中将一个字符串变量复制到另一个字符串变量时遇到问题

  17. 17

    如何在Java中将某个单词从一个字符串复制到另一个字符串

  18. 18

    在java中,如何在字符串中查找单词并将其复制到另一个字符串变量中?

  19. 19

    计算一个字符串在另一个字符串中每个字符的出现次数

  20. 20

    正则表达式从一个字符串到另一个字符串

  21. 21

    查找一个字符串到另一个字符串程序的排列

  22. 22

    从一个字符串数组到另一个字符串数组的strcpy

  23. 23

    在字典上,一个字符串比另一个字符串大是什么意思?

  24. 24

    将整数从一个字符串移动到另一个字符串?

  25. 25

    使用C ++将一个字符串替换为另一个字符串

  26. 26

    将整数从一个字符串移动到另一个字符串?

  27. 27

    swift:如何将一个字符串从textField分配给另一个字符串?

  28. 28

    如何将一个字符串值与另一个字符串值进行比较?

  29. 29

    使用 PHP 将一个字符串与另一个字符串匹配

热门标签

归档