gpt4 book ai didi

c - 从指针数组中查找重复项

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:45 25 4
gpt4 key购买 nike

我想找到指针数组中存在的重复项。代码如下所示。当我运行这个应用程序时,它出现段错误。但是当我提取这个函数时,我能够很好地运行它。可以任何人请告诉我什么可以 `

当我检测到重复项时,我只是将这些字符串放入名为 output.txt 的文件中。

我发现当使用 strcmp 时,它给出了这个段错误。但是当我提取这个函数并在一些测试代码上运行它时,它工作得很好。

      main()
{
char *a[20];
DIR *dip;
int i = 0;
dip = opendir("src/my_folder");
char *condition_var;


while ((dit = readdir(dip)) != NULL)
{
condition_var = dit->name;

a[i] = condition_var
i++;
}
findduplicates(a,i);
}

char *findduplicates(char *arr[3],int count)
{
int i = 0;
int j = 0;
int val = 0;
FILE *output = fopen("output.txt","w");
for(i = 0;i<count;i++)
{
j = i+1;
for(;j<count;j++)
{
if(strcmp(arr[i],arr[j])==0)
{
printf("The index of a duplicate elemnt is %d\n",j);
arr[j] = " ";

}
}

}
int k = 0;
while(k<3)
{

printf("the aarray is %s\n",arr[k]);
fputs(arr[k],output);
fputs("\n",output);
k++;
}

}`

先谢谢麦迪

最佳答案

char *a[20]; // an array of char pointers. 20 elements in the array.

char *findduplicates(char *arr[3],int count)
// arr is an array of char pointers, with 3 elements in the array.

findduplicates(a, count); // this will just pass 3 of the 20 pointers
// thus when you try to access a[3], it will probably seg-fault.

试试这个:

char *findduplicates(char **arr,int count)

[编辑]也许我错了。我刚刚写了一个小测试程序,即使将函数参数声明为char *a[0]也不会崩溃。但无论如何请尝试我的建议。内存错误并不总是使东西崩溃......

关于c - 从指针数组中查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6425747/

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