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

img

img

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

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

指针数组 和 动态分配内存在你这个题目上有点冲突。
指针数组表示,数组的每个元素都是指针,而变量的本身是个数组,形式为 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;
}

获得所有字符串的最小长度进行循环,判断多个字符串对应位置的字符是否全部相同,不同则结束,输出相同的字符。如果相同字符数量为0,则输出空
指针就是用来表示各个字符串就行了。
什么叫做根据N分配内存空间----就是用malloc给字符串分配空间

#include <stdio.h>
void func(char **p,int n)
{
    int i=0,j,count = 0;
    while(p[0][i] != '\0')
    {
        for(j=1;j<n;j++)
        {
            if(p[j][i] != '\0' && p[j][i] == p[0][i])
                continue;
            else
                break;
        }
        if(j==n)
        {
            printf("%c",p[0][i]);
            count++;
        }
        i++;
    }
    if(count == 0)
        printf(" ");
}

int main()
{
    int N,i;
    printf("输入字符串数量:");
    scanf("%d",&N);
    getchar();
    char ** p = (char**)malloc(sizeof(char*)*N);
    for(i=0;i<N;i++)
    {
        p[i] = (char*)malloc(sizeof(char)*1000);
        printf("输入第%d个字符串:\n",i+1);
        gets(p[i]);
    }
    func(p,N);
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632