怎么把指针数组运用进去来完成实验目的?
而且我不太明白这个实验要求的第二条,什么叫做根据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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!