Bu kod, dizinin bir dizi dizisine (işaretçiye gösterici) ve adların uzunluğuna göre realloc kaydetmelidir (her bir dizenin tam dinamik yerini oluşturun) onların) ve dize ve uzunluğu basar ve her şeyi özgür bırakır. Yani kod hata ayıklama yaparken çalışır, ancak CTR + f5 ile çalıştırdığımda ilk dizenin fidyelerinden sonra çöker. Ayrıca, tüm ücretsiz döngüler ve ücretsiz işlev beni burada çalışmıyor, ancak çıkarsa hata ayıklama hala çalışıyor ve CTR + f5 hala çalışmıyor. birine yardım et?Kod hata ayıklama yaparken çalışır, ancak kod çalıştırıldığında kilitlendi
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LENGTH 20
int main(void)
{
int i = 0, j = 0,friends=0;
char str[LENGTH];
printf("Hello bro,how U doin'?\nTell me how many friends do you have?\n");
scanf("%d",&friends);
char** friendBook = (char**)malloc(sizeof(char)*friends);
if (friendBook)
{
getchar();
for (i = 0; i < friends; i++)
{
*(friendBook+ i) = malloc(LENGTH*sizeof(char));
}
for (i = 0; i < friends; i++)
{
printf("Enter friend number: %d\n", i + 1);
fgets(str, LENGTH, stdin);
str[strcspn(str, "\n")] = 0;
*(friendBook + i) = (char*)realloc(*(friendBook+i),(sizeof(char)*strlen(str))); // dynamic memory for every string(name)
if (*(friendBook + i))
{
strcpy(*(friendBook+i),str);
}
}
for (i = 0; i < friends; i++)
{
printf("Friend: %s\tLength of friend name %d\n", *(friendBook + i), strlen(*(friendBook + i)));
}
}
for (i = 0; i <friends; i++)
{
free(*(friendBook+i));
}
free(friendBook);
system("PAUSE");
return 0;
}
Neden * (friendBook + i) ve arkadaş değil [i]? – gnasher729
'char ** friendBook = (char **) malloc (sizeof (char) * arkadaşlar);' -> 'char ** friendBook = (char **) malloc (sizeof (char *) * arkadaşlar); – BLUEPIXY
@BLUEPIXY teşekkürler! şimdi çalışıyor! – blackFish