Я работаю над кодом для записи и чтения информации из структуры, которая имеет переменную типа указателя, и до сих пор все работает хорошо, но когда я пытаюсь очистить экран с помощью системы ("CLS"); программа завершается, но это происходит только после чтения строки persona [cx] .nombre.
Я пытался использовать разные способы чтения строки (getchar (), scanf ("% s") и scanf ("% c)), но это, похоже, не помогает. Я думаю, что эта проблема связана с переменная указателя, потому что указатели и структуры являются новыми для меня, так что, возможно, я что-то упустил.
вот код, который я сделал до сих пор:
struct datos{
char nombre[30];
int edad;
char sexo;
} *persona;
void arreee(int *);
int main(){
int me = 0;
persona = malloc(sizeof(char[1]));
printf("\n Repeticiones: ");
scanf("%d", &me);
fflush(stdin);
persona = realloc(persona, me);
arreee(&me);
printf("\n. . .\nDone! %d\n. . .\n>", me);
getchar();
return 0;
}
// funciones
void arreee(int *e){
int cx, i;
for(cx = 0; cx < *e; cx++)
{
printf("\nsexo? m/f\n> ");
scanf("%1c", &persona[cx].sexo);
fflush(stdin);
printf("\nnombre> ");
fgets(persona[cx].nombre, 30, stdin);
fflush(stdin);
printf("\nedad> ");
scanf("%d", &persona[cx].edad);
fflush(stdin);
system("cls");
}
for(i = 0; i < *e; i++)
{
printf("Sexo %c Edad %d Nombre %s", persona[i].sexo, persona[i].edad, persona[i].nombre);
}
}