当system(“ CLS”)从结构读取的字符串崩溃

时间:2018-11-06 03:05:06

标签: c windows pointers struct

我正在编写代码,以从具有指针类型变量的结构中写入和读取信息,到目前为止一切正常,但是,当我尝试使用system(“ 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);
        }
    }

0 个答案:

没有答案