Я хочу написать программу, которая принимает строковый ввод как расширение и должна сохранять все имена файлов в моем символе **.
В данный момент ввод жестко закодирован в вызове функции в строке 50
Но я получаю ошибку сегмента и, если я хочу напечатать i <2 в строке 54, вывод будет довольно поврежден. </p>
Есть предложения?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
void getFiles (char* extension, char** fileNames, int* len)
{
*len = 0;
//*(fileNames + 1) = "Test 2";
DIR *d;
struct dirent *dir;
d = opendir(".");
if (d)
{
while((dir = readdir(d)) != NULL)
{
if (!(strcmp (extension, strrchr (dir->d_name, '.') + 1)))
{
(*len) ++;
printf("%d\n", *len);
char** tmp = realloc (fileNames, sizeof (char*) * ((*len)));
if (tmp == NULL)
{
printf("error\n");
exit (1);
}
fileNames = tmp;
*(fileNames + (*len) - 1) = (char*) dir->d_name;
printf("%s\n", *(fileNames + (*len) - 1));
}
}
closedir(d);
}
*(fileNames + 1) = "test";
}
int main()
{
char** fileNamePointer;
int* len;
len = (int *) malloc (sizeof (int));
*len = 0;
fileNamePointer = (char**) malloc (sizeof(char*));
getFiles ("csv", fileNamePointer, len);
int i;
printf("len: %d\n", *len);
for (i = 0; i < (*len); i++)
{
printf("%s\n", *(fileNamePointer + i));
}
}
Выход если я печатаю, я <2 в строке 56 </p>
1
test.csv
2
test2.csv
3
test3.csv
4
test4.csv
len: 4
8▒0▒
8▒ 0▒