C语言字符串作为函数参数和赋值问题

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

1)请问这道题怎么做,我这样写,但总是报错:[Error] expected primary-expression before 'char'
2)如何给字符串赋值,这样写对吗? str3[15]= char fun(str1,m)

#include
#include

char fun(char *,int );

int main()
{char str1[15],str3[15];
int m;
gets(str1);
scanf("%d",&m);
str3[15]= char fun(str1,m)
puts(str3);
}

char fun(char *p,int m)
{ char str2[15];
for(;p!='\0';m++){
str2[15]=
(p+m);
return str2[m];
}

}

str3[15]= char fun(str1,m)这没写不对,直接 用 str3= fun(str1,m)
另外,fun函数中的str2作用范围仅仅在fun函数中,出了fun函数就被回收了,这没写是不对的。
代码修改了一下,运行结果:

img

代码:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* fun(char*, int,char* );

int main()
{
    char str1[15]; //原字符串
    char str2[15]; //需要替换成的字符串
    char* out;
    int m;
    gets(str1); //读入原字符串
    scanf("%d", &m); //读入长度
    getchar();//吸收回车符
    gets(str2); //读取需要替换成的字符串
    out = fun(str1, m,str2);
    printf("%s", out);
    return 0;
}

//将p字符串第m个字符之后的字符替换为t
char* fun(char* p, int m, char* t)
{
    int i = 0;
    int len = strlen(p) - m + strlen(t) + 1; //得到新字符串的长度
    char* str2 = (char*)malloc(strlen(p) + 1);
    for (i = 0; i < m - 1; i++) //先把前m-1个字符复制到新字符串中
        str2[i] = *(p + i);

    //将t中的字符复制到新字符串中
    for (; *t != '\0'; i++, t++)
        str2[i] = *t;
    str2[i] = 0;
    return str2;
}




您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632