Gilgamesh_02 2021-10-03 19:43 采纳率: 50%
浏览 50
已结题

利用指针操作进行字符串复制

问题:输入一个字符串到字符数组s1中,将s1中的字符串复制到字符数组s2中并输出s2中的字符串。

用数组下标操作可以很容易实现:

#include<stdio.h>
#include<string.h>
int main(void)
{
    char s1[10],s2[10];
    int i;
    scanf("%s",s1);
    for(i=0;i<=strlen(s1);i++)
    {
        s2[i]=s1[i];
    }
    printf("%s",s2);
    return 0;    
}

然后想试一试用指针操作,但遇到了问题:
这样写代码就会出问题,运行结果中并不能打出s2(其中s1以及确保能够接受到输入的字符串)

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    char *s1,*s2;
    int i;
    s1=(char*)malloc(sizeof(char)*10); 
    s2=(char*)malloc(sizeof(char)*10); 
    scanf("%s",s1);
    while((*s2++ = *s1++) != '\0')
        ;
    for(i=0;i<6;i++)
        printf("%c",s2[i]);
    return 0;    
}

但这样就可以:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    char *s1,s[10];
    int i;
    char *s2=s;
    s1=(char*)malloc(sizeof(char)*10); 
    scanf("%s",s1);
    while((*s2++ = *s1++) != '\0')
        ;
    for(i=0;i<6;i++)
        printf("%c",s[i]);
    return 0;    
}

是什么原因呢?
另外指针操作是不是不太好实现‘\0’也复制的要求。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月11日
    • 创建了问题 10月3日

    悬赏问题

    • ¥15 关于#java#的问题,请各位专家解答!
    • ¥15 急matlab编程仿真二阶震荡系统
    • ¥20 TEC-9的数据通路实验
    • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
    • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
    • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
    • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
    • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
    • ¥30 求解达问题(有红包)
    • ¥15 请解包一个pak文件