gpt4 book ai didi

c - 将多个字符串分别放入一个数组中

转载 作者:行者123 更新时间:2023-11-30 17:59:00 25 4
gpt4 key购买 nike

我想编写一个程序,从给定的字符串中获取子字符串。

然后,程序将检查子字符串是否是回文。如果是回文,它会将它们列在其他地方,然后它会整理出唯一的回文。

但是有没有一种方法可以让我可以将多个字符串单独放入一个数组中?

我编写了一个程序,可以计算有多少子字符串是回文,但是,我无法弄清楚如何从中计算唯一的回文。

我的代码如下:

#include<stdio.h>
#include<malloc.h>
#include<string.h>
char* substring(char*,int,int);
int is_palindrome(char array[],int length);
int main()
{
char string[85],*pointer;
int position,length,temp,string_length,pesky;
printf("enter a string\n");
while(gets(string)){
position=1,length=2;
temp=string_length=pesky=strlen(string);
while(position<=string_length){
while(length<=temp){
pointer=substring(string,position,length);
if(is_palindrome(pointer,length)==1){pesky++;puts(pointer);}
free(pointer);
length++;
}
position++;
temp--;
length=2;
}
printf("The string '%s' contains %d palindromes.\n",string,pesky);
}
return 0;
}
char* substring(char *string,int position,int length)
{
char *pointer;
int c;
pointer=malloc(length+1);
if(pointer==NULL){
printf("unable to locate memory.\n");
exit(EXIT_FAILURE);
}
for(c=0;c<position-1;c++){
string++;
}
for(c=0;c<length;c++){
*(pointer+c)=*string;
string++;
}
*(pointer+c)='\0';
return pointer;
}
int is_palindrome(char array[],int length)
{
int k,j,o=0;
for(k=length-1,j=0;k>j;k--,j++){
if(array[k]!=array[j]){
o=1;
break;
}
}
if (o==0) {return 1;}
else {return 0;}
}

最佳答案

为了存储各种子字符串,您将需要一个 char 指针数组。当您分离出要复制到分配内存区域的子字符串时,您将获取返回的指针并将该指针存储到 char 指针数组中。

因此,类似以下内容将定义一个字符数组以及当前数组中的字符指针数量。

char *pArrayStrings [100];
int iArrayStringsIndex = 0;

此时您将拥有一个 char 指针数组。然后,您可以搜索数组以确定是否已找到回文。类似下面的内容。

{
int iLoop = 0;
// search the array to see if this palindrome is already there
for (iLoop = 0; iLoop < iArrayStringsIndex; iLoop++) {
if (strcmp (pArrayStrings[iLoop], pointer) == 0) {
// found a match for this palindrome
break;
}
}
if (iLoop >= iArrayStringsIndex) {
// this is a new palindrome that is not in the array
pArrayStrings[iArrayStringsIndex] = pointer;
iArrayStringsIndex++;
}
}

上面的 strcmp() 函数区分大小写,因此您可能需要使用不区分大小写的比较。

我还没有尝试编译此代码,因此其中可能存在错误,但这将是一种通用方法,应该可以让您接近您想要的。

完成后,您可以循环数组并执行 free() 来释放分配的内存。

关于c - 将多个字符串分别放入一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11845620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com