编程,将字符串中的第m个字符开始的全部字符复制成另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调用函数中完成复制。

//代码一,输出正确

#include<stdio.h>
void f(char *a,int m,char *b)
{    
    b=a+m;
    puts(b);
}
int main()
{
    char a[99],b[99],*pa=a,*pb=b;
    int m,i;
    printf("请获得一串字符串:\n");
    gets(a);
    printf("请输入一个数字m:\n");
    scanf("%d",&m);
    printf("从第%d个字符开始的字符串为:\n",m);
    f(pa,m,pb);
    return 0;
}

//代码二,自定义函数中的puts(b)放到主函数中,但是输出为乱码,为什么

#include<stdio.h>
void f(char *a,int m,char *b)
{
    b=a+m;
}
int main()
{
    char a[99],b[99],*pa=a,*pb=b;
    int m,i;
    printf("请获得一串字符串:\n");
    gets(a);
    printf("请输入一个数字m:\n");
    scanf("%d",&m);
    printf("从第%d个字符开始的字符串为:\n",m);
    f(pa,m,pb);
    puts(b);
    return 0;
}

修改如下

#include<stdio.h>
void f(char *a,int m,char **b)
{
    *b=a+m;
}
int main()
{
    char a[99],b[99],*pa=a,*pb=b;
    int m,i;
    printf("请获得一串字符串:\n");
    gets(a);
    printf("请输入一个数字m:\n");
    scanf("%d",&m);
    printf("从第%d个字符开始的字符串为:\n",m);
    f(pa,m,&pb);
    puts(pb);
    return 0;
}