Странные символы появляются после печати строк из указателя на массив указателей.Иногда даже вылетает, как память закончилась.Это почему?Каждая вещь должна быть динамичной.Иногда, если я пишу только одну или две причины, таких ошибок не бывает.вывод - a═══asda или adsas═²²²²²²════⌡X╩▒2.
#define MAX_LENGTH 50
#define ONE 1
#define TWO 2
#define THREE 3
#define EXIT 4
typedef struct list
{
char** reasons;
}list;
int main(void)
{
list pros = { (char*)malloc(sizeof(char) * MAX_LENGTH) };
list cons = { (char*)malloc(sizeof(char) * MAX_LENGTH) };
char* reason = 0;
char* dillema = 0;
reason = (char*)malloc(sizeof(char) * MAX_LENGTH);
dillema = (char*)malloc(sizeof(char) * MAX_LENGTH);
printf("What is your dillema? \n");
fgets(dillema, MAX_LENGTH, stdin);
dillema[strcspn(dillema, "\n")] = 0;
dillema = (char*)realloc(dillema, sizeof(char) * strlen(dillema) + ONE);
switch (selection)
{
case ONE:
printf("Enter a reason to add to list PRO: \n");
fgets(reason, MAX_LENGTH, stdin);
reason[strcspn(reason, "\n")] = 0;
reason = (char*)realloc(reason, (sizeof(char) * strlen(reason)) + 1);
pros.reasons = (char**)realloc(pros.reasons, (sizeof(char*) * prosCounter) + 1);
strcpy(pros.reasons + prosCounter, reason);
prosCounter += ONE;
break;
case TWO:
printf("Enter a reason to add to list CON: \n");
fgets(reason, MAX_LENGTH, stdin);
reason[strcspn(reason, "\n")] = 0;
reason = (char*)realloc(reason, (sizeof(char) * strlen(reason)) + 1);
cons.reasons = (char**)realloc(cons.reasons, (sizeof(char*) * consCounter) + 1);
strcpy(cons.reasons + consCounter, reason);
consCounter += ONE;
break;
case THREE:
printf("Your dillema: \n%s \n\n", dillema);
printf("LIST PROS\n_________ \n");
for (i = 0; i < prosCounter; i++)
{
printf("%s \n", pros.reasons + i);
}
printf("LIST CONS\n_________ \n");
for (i = 0; i < consCounter; i++)
{
printf("%s \n", cons.reasons + i);
}
printf("\n\n");
break;
case EXIT:
break;
}
}
}