盐冰915 2022-11-10 16:48 采纳率: 86.7%
浏览 26
已结题

怎么完成下面的实验要求?

img

img

怎么把指针数组运用进去来完成实验目的?

而且我不太明白这个实验要求的第二条,什么叫做根据N分配内存空间?N不就是输入单词的个数吗?

  • 写回答

3条回答 默认 最新

  • 关注

    指针数组 和 动态分配内存在你这个题目上有点冲突。
    指针数组表示,数组的每个元素都是指针,而变量的本身是个数组,形式为 char * str[100];
    你动态分配的时候,可以给str中的每个元素进行动态分配内存
    你上个题目的代码是动态分配内存,没有用指针数组,代码修改如下:

    #define _CRT_SECURE_NO_WARNINGS 1
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    char* longestCommmonPrefix(char* strs[], int strSize)
    {
        int i, j;
        int flag = 0, max = 0;
        for (i = 1; i <= strlen(*strs) && flag != 2; i++)
        {
            flag = 0;
            for (j = 1; j < strSize; j++)
            {
                if (i <= strlen(strs[j]) && strncmp(*strs, strs[j], i) != 0)
                {
                    flag = 1;
                    break;
                }
                if (i > strlen(strs[j]))
                {
                    flag = 2;
                    break;
                }
            }
            if (flag == 0)
                max = i;
        }
    
        char* result = (char*)malloc((max + 1) * sizeof(char));
        memset(result, 0, max + 1);
        memcpy(result, strs[0], max);
    
        return result;
    }
    
    int main()
    {
        char* str[100];
        int i, n;
        scanf("%d", &n);
        getchar();//吸收回车符
        for (i = 0; i < n; i++)
        {
            str[i] = (char*)malloc(200);
            scanf("%s", str[i]);
        }
    
    
        printf("%s\n", longestCommmonPrefix(str, n));
    
        for (i = 0; i < n; i++)
            free(str[i]);
        
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月18日
  • 已采纳回答 11月10日
  • 创建了问题 11月10日