DeLioncourt 2023-09-09 18:13 采纳率: 100%
浏览 9
已结题

使用函数实现字符串部分复制 为什么我的代码不对

本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。

函数接口定义:
void strmcpy( char *t, int m, char *s );
函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 20
 
void strmcpy( char *t, int m, char *s );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */
 
int main()
{
    char t[MAXN], s[MAXN];
    int m;
    
    scanf("%d\n", &m);
    ReadString(t);
    strmcpy( t, m, s );
    printf("%s\n", s);
 
    return 0;
}
 
/* 你的代码将被嵌在这里 */

输入样例:

7
happy new year

输出样例:

new year

想知道我的程序应该怎么改

void strmcpy( char *t, int m, char *s ){
    int i;
    if(m>=20){
        s=0;
    }
    for(i=0;m+i<20;i++){    
    s[i]=t[m-1+i];
    }
    
}

报错如下

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-09 20:10
    关注

    【以下回答由 GPT 生成】

    问题分析: 1. 函数声明:函数头部没有指定返回类型。 2. 数组越界:在循环复制字符串的过程中,没有考虑到字符串t结束的情况。 3. 字符串结束标志:在复制字符串的最后,没有添加字符串结束标志。

    解决方案: 1. 添加函数返回类型为void的声明。 2. 在循环条件中添加对字符串t结束的检查。 3. 在复制字符串结束后,添加字符串结束标志。

    代码优化如下:

    void strmcpy( char *t, int m, char *s )
    {
        int i;
    
        for(i=0; t[m-1+i]!='\0'; i++)
        {
            s[i] = t[m-1+i];
        }
        s[i] = '\0';
    }
    

    将以上代码替换原有的/* 你的代码将被嵌在这里 */部分即可。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月30日
  • 已采纳回答 9月22日
  • 创建了问题 9月9日

悬赏问题

  • ¥50 求大神教题,这个代码和讲解思路都怎么写呀,完全卡住了
  • ¥15 基于ffmpeg 编码成yuv420p nv12的问题
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗