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 如何让企业微信机器人实现消息汇总整合
    • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
    • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
    • ¥15 TLE9879QXA40 电机驱动
    • ¥20 对于工程问题的非线性数学模型进行线性化
    • ¥15 Mirare PLUS 进行密钥认证?(详解)
    • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
    • ¥20 想用ollama做一个自己的AI数据库
    • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
    • ¥15 请问怎么才能复现这样的图呀