m0_47428395 2022-11-03 10:40 采纳率: 100%
浏览 37
已结题

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

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

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

#include<stdio.h>
#include<string.h>

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];
}

}

  • 写回答

3条回答 默认 最新

  • 关注

    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;
    }
    
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月18日
  • 已采纳回答 11月10日
  • 创建了问题 11月3日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同