噜啦噜啦噜呼呼呼 2024-01-13 00:08 采纳率: 70.7%
浏览 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()来避免缓冲区溢出,并在读取字符串后将末尾的换行符去掉。现在程序应该能够正确输出最大的字符串了。



    【相关推荐】



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

报告相同问题?

问题事件

  • 创建了问题 1月13日

悬赏问题

  • ¥50 求解vmware的网络模式问题
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?