Может ли кто-нибудь помочь мне понять, почему я получаю ненужные значения в моем массиве? Мой код:Значения нежелательной почты в динамическом массиве
FILE *fp;
fp = fopen("input.txt", "r");
char buffer[5000];
int size = 0;
char *ptr;
char **fileArrayPTR;
fileArrayPTR = malloc(sizeof(char*));
while (fgets(buffer, 5001, fp) != NULL) {
fileArrayPTR[size] = malloc(strlen(buffer) + 1);
strcpy(fileArrayPTR[size], buffer);
for (int p = 0; p < 5001; p++) {
if (fileArrayPTR[size][p] == '\n') {
fileArrayPTR[size][p] = '\0';
break;
}
}
//printf("%s\n",fileArrayPTR[size]);
size++;
}
for (int x = 0; x < size; x++) {
printf("%s\n", fileArrayPTR[x]);
}
Если я раскомментировать заявление PRINTF перед size++
, я получаю правильный результат, но когда я беру, что и попробовать нижнюю часть кода не работает. Он работает для fileArrayPTR[16]
или выше, но не от 0 до 15. Также, если я должен был вернуть fileArrayPTR
в main
, как я мог бы также вернуть размер?
Ознакомьтесь с первым вызовом 'malloc'. – e0k
'fileArrayPTR = malloc (sizeof (char *));': 'fileArrayPTR' может содержать только один указатель. вы можете использовать только 'fileArrayPTR [0]'. Также '5001' ->' 5000' – BLUEPIXY
Я изменил свой код на fileArrayPTR = malloc (5000 * sizeof (char *)), и он работает (тот же самый буфер). Должен ли я сохранить это, правильно ли это соглашение? – FreeStyle4