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

Gokul英国

试图将一个字符串复制到另一个字符串。作为一个基础学习者,我尝试了最大的努力来获得输出,但是在程序的结尾(point1),我的逻辑无法正常工作。请参考下面给出的我的输入和输出以获得清晰的主意。

该程序复制一个字符串。

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int n1,n2,loc;
    char *p1, *p2;

    printf("Enter size of p1\n");
    scanf("%d", &n1);

    p1 = (char*) malloc (n1 * sizeof(char));

    printf("Enter the P1 String\n");
    fflush(stdin);
    gets(p1);

    printf("\nEnter the size of p2\n");
    scanf("%d", &n2);

    p2 = (char*) malloc (n2 * sizeof(char));

    printf("Enter the P2 String\n");
    fflush(stdin);
    gets(p2);

    printf("\nEnter the Location to copy\n");
    scanf("%d", &loc);

    for(int i=loc-1;i<=n1;i++) //point 1
    {
       *(p1+i) = *(p1+i)+n2;
    }

    for(int i=0;i<=n2;i++)
    {
       *(p2+i) = *(p1+i)+loc;
    }

    printf("\n Final copy is\n");
        printf("%d",p1);

    free(p1);
    free(p2);

    return 0;
}

预期:

Input:
google
microsoft

output:
Goomicrosoftgle

实际:

Input:
google
microsoft

output:
[Some garbage values including given string]
拉基布尔伊斯兰教
  • 首先,请勿使用,gets()因为使用不安全且已弃用
  • p1p2在内存中动态分配,并且它们各自的大小分别n1n2所以,当你从添加更多的字符p2p1,输出需要的尺寸要增加,否则他们将不适合在内存空间
  • 对于使用scanf分配的内存进行字符串输入,由于末尾插入了一个空终止符,因此必须比实际长度大一
  • 在最终的打印语句中,使用的%d是整数类型的格式说明符,因此%s在打印整个字符串时应使用

因此,这应该工作:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n1, n2, loc;
    char *p1, *p2, *output;

    printf("Enter size of p1: ");
    scanf("%d", &n1);

    p1 = malloc((n1 + 1) * sizeof(char));

    printf("Enter the P1 String: ");
    scanf("%s", p1);

    printf("\nEnter the size of p2: ");
    scanf("%d", &n2);

    p2 = malloc((n2 + 1) * sizeof(char));

    printf("Enter the P2 String: ");
    scanf("%s", p2);

    printf("\nEnter the Location to copy: ");
    scanf("%d", &loc);

    output = malloc((n1 + n2 + 1) * sizeof(char));

    for (int i = 0; i < loc; i++)
        *(output + i) = *(p1 + i);

    for (int i = loc - 1; i <= n1; i++)
        *(output + i + n2) = *(p1 + i);

    for (int i = 0; i < n2; i++)
        *(output + i + loc) = *(p2 + i);

    printf("\nFinal copy is: ");
    printf("%s\n", output);

    free(p1);
    free(p2);
    free(output);

    return 0;
}

这是输出:

Enter size of p1: 6
Enter the P1 String: google

Enter the size of p2: 9
Enter the P2 String: microsoft

Enter the Location to copy: 3

Final copy is: goomicrosoftgle

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

将一个字符串插入另一个

来自分类Dev

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

来自分类Dev

Java使用嵌套循环在另一个字符串中查找一个字符串出现的次数

来自分类Dev

使用数组和foreach循环从另一个字符串中获取一个字符串

来自分类Dev

使用 for 循环在另一个字符串中查找一个字符串

来自分类Dev

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

来自分类Dev

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

来自分类Dev

将一个字符串连接到另一个字符串中

来自分类Dev

C ++将一个字符串中的一个字符追加到另一个字符串

来自分类Dev

用动态内容中的另一个字符串替换子字符串

来自分类Dev

用字符串中的另一个字符替换“字符”

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

    将一个字符串插入另一个

  15. 15

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

  16. 16

    Java使用嵌套循环在另一个字符串中查找一个字符串出现的次数

  17. 17

    使用数组和foreach循环从另一个字符串中获取一个字符串

  18. 18

    使用 for 循环在另一个字符串中查找一个字符串

  19. 19

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

  20. 20

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

  21. 21

    将一个字符串连接到另一个字符串中

  22. 22

    C ++将一个字符串中的一个字符追加到另一个字符串

  23. 23

    用动态内容中的另一个字符串替换子字符串

  24. 24

    用字符串中的另一个字符替换“字符”

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档