

怎么把指针数组运用进去来完成实验目的?
而且我不太明白这个实验要求的第二条,什么叫做根据N分配内存空间?N不就是输入单词的个数吗?


怎么把指针数组运用进去来完成实验目的?
而且我不太明白这个实验要求的第二条,什么叫做根据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;
}