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日

悬赏问题

  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
  • ¥15 SQL Server analysis services 服务安装失败