mushanyu_ 2022-09-20 20:26 采纳率: 64.3%
浏览 138
已结题

给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀

给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否则不进行任何操作

#include <stdio.h>
#include <stdlib.h>

int is (char a[],char b[])         //is函数作用是判断a数组结尾是否和b数组相同,若否返回0,否则把a数组后缀处换为/0并返回0
{
    int n1=strlen(a),n2=strlen(b);
    int i,j;
    for (i=n1-n2,j=0;i<n1;i++,j++)
    {
        if(a[i]!=b[j])
        {
            return 0;
        }

    }
    a[n1-n2]='\0';
    return 1;

}
int main()
{
    char s1[100];
    gets(s1);
    int n1=strlen(s1);
    char b[2]={'e','r'};
    char c[2]={'l','y'};
    char d[3]={'i','n','g'};
    if (is(s1,b))
    {

        printf("%s",s1);
        return 0;
    }
        if (is(s1,c))
    {

        printf("%s",s1);
        return 0;
    }
        if (is(s1,d))
    {

        printf("%s",s1);
        return 0;
    }

    printf("%s",s1);


    return 0;
}


输入referer输出仍为referer

新学了指针,想尝试利用函数对字符串判断+处理,但是无效

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-09-20 20:31
    关注

    char b[2]={'e','r'};
    char c[2]={'l','y'};
    char d[3]={'i','n','g'};
    改为
    char b[]="er";
    char c[]="ly";
    char d[]="ing";
    ====
    你的写法有错误,是因为这三个字符串没有字符串结束符。用strlen计算的长度不是字符串实际的长度。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月20日
  • 已采纳回答 9月20日
  • 创建了问题 9月20日

悬赏问题

  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本