qq_42932422 2019-05-12 09:56 采纳率: 0%
浏览 756

自编函数实现strlen 和strcat 我的代码测试结果没问题但是现实运行时错误 求解答

首先请实现如下两个函数(要自己写代码完成,不允许直接调用库函数):
int myStrLen(char *s);
该函数功能为求字符串s的长度。
void myStrConcat(char *string1, char *string2);
该函数的功能为将字符串string2拼接至字符串string1后边。注意:该函数的两个参数,在调用时有可能会指向同一个字符串,函数需要在这种情况下能正确完成指定的功能。

主函数要求使用以上两个函数实现如下功能:
输入:
第一行为三个整数n(0<n<10),a,b, 第二行为n个整数,后边为n行字符串,每个字符串长度不超过20。
输出:
要求首先将第b行字符串拼接至第a行的字符串后再输出。
第一行为n个用单个空格分隔的整数(最后一个数后无空格),为按各字符串的输入次序输出的各字符串的长度。
后边n行为将输入的字符串按输入的第2行给出的顺序依次输出。
输入保证合法且字符串中不包含空格。

#include<stdio.h>
int myStrLen(char s[]); 
void myStrConcat(char string1[], char string2[]);
int main()
{
    int n,a,b,i,j;
    int k[20];
    char c[20][100]={"0"};
    scanf("%d%d%d",&n,&a,&b);
    for(i=0;i<n;i++)scanf("%d",&k[i]);
    for(i=0;i<n;i++){
        getchar();
        scanf("%s",c[i]);
    }
    myStrConcat(c[a],c[b]);
    for(i=0;i<n;i++){
        if(i==0)printf("%d",myStrLen(c[i]));
        else printf(" %d",myStrLen(c[i]));
    }
    printf("\n");
    for(i=0;i<n;i++)printf("%s\n",c[k[i]]);
    return 0;
} 


void myStrConcat(char string1[], char string2[])
{
    int myStrLen(char s[]);
    int i,j,l1,l2;
    l1=myStrLen(string1);
    l2=myStrLen(string2);
    for(i=l1,j=0;string2[j]!='\0';i++,j++)string1[i]=string2[j];
    string1[l1+l2]='\0';
}


int myStrLen(char s[])
{
    int j=0,len=0;
    for(j=0;s[j]!='\0';j++,len++);
    return(len);
}

  • 写回答

3条回答 默认 最新

  • threenewbee 2019-05-12 10:10
    关注

    你的函数我测试了没有什么问题,应该是main输入输出的问题
    getchar();
    这是干嘛,它会吃掉字符

    评论

报告相同问题?

悬赏问题

  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd