噜啦噜啦噜呼呼呼 2024-01-13 00:08 采纳率: 66.3%
浏览 4
已结题

指针数组指向字符串找到最大的

编写程序,输入5个字符串,将这5个字符串的较大的字符串输出。要求用二维字符数组存放这5个字符串,用指针数组元素分别指向这5个字符串。


#include<stdio.h>
#include<string.h>
int main()
{
    char str[5][10]={0},*p[5],*max;
    int i;
    for(i=0;i<5;i++)
    {
        gets(str[i]);
        p[i]=str[i];
    }
    max=p[0];
    for(i=1;i<5;i++)
    {
        if(strcmp(p[i],max)>0) max=p[i];
    }
    printf("\n%s",max);    
    return 0;
}

我的代码哪里错了捏,找不到错哪了,大家帮我看一下,最后输出的不是最大的字符串

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-13 02:03
    关注

    【以下回答由 GPT 生成】

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        char str[5][10] = {0}, *p[5], *max;
        int i;
    
        for (i = 0; i < 5; i++)
        {
            fgets(str[i], 10, stdin); // 使用fgets替换gets,以避免缓冲区溢出
            str[i][strlen(str[i]) - 1] = '\0'; // 将fgets得到的换行符去掉
            p[i] = str[i];
        }
    
        max = p[0];
    
        for (i = 1; i < 5; i++)
        {
            if (strcmp(p[i], max) > 0) 
            {
                max = p[i];
            }
        }
    
        printf("\n%s", max);    
        return 0;
    }
    

    修正后的代码中,使用fgets()替换了gets()来避免缓冲区溢出,并在读取字符串后将末尾的换行符去掉。现在程序应该能够正确输出最大的字符串了。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月1日
  • 创建了问题 1月13日

悬赏问题

  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含