结构问题

时间:2016-06-05 20:57:54

标签: c struct scanf

typedef struct{
    char noreg[11];
    float IPK;
}Mahasiswa; 

void showDataArr(Mahasiswa *A, int ukuran){
    int i;  
    for(i=0;i<ukuran;i++){  
        printf("Mhs ke %d\n",i+1);
        printf("\tNoreg : %s\n",A[i].noreg);
        printf("\tIPK   : %.2f\n",A[i].IPK);
    }
}

void isiDataArr(Mahasiswa *A, int ukuran ){
    int i;
    char temp[20];
    for(i=0;i<ukuran;i++){  
        printf("Masukan Noreg : ");
        scanf ("%[^\n]",A[i].noreg);
        printf("Masukan IPK   : ");scanf("%f",&A[i].IPK);
        getchar();
    }
}

int n;
main(){

    Mahasiswa PTIK[n];

    printf("masukan jumlah data :");
    scanf("%d",&n); //this part
    isiDataArr(PTIK,n);
    printf("\n");
    showDataArr(PTIK,n);
    getch();
}

你好我有那个代码就在那边,我的问题是当我运行它时scanf会使程序绕过第一个数组输入“masukan no reg”会留空 like this 然而,其余数组将正常运行

1 个答案:

答案 0 :(得分:0)

如果我稍微更改你的程序,它会按照我的想法做到:

#include<stdio.h>

typedef struct {
    char noreg[11];
    float IPK;
} Mahasiswa;

void showDataArr(Mahasiswa *A, int ukuran) {
    int i;
    for (i = 0; i < ukuran; i++) {
        printf("Mhs ke %d\n", i + 1);
        printf("\tNoreg : %s\n", A[i].noreg);
        printf("\tIPK   : %.2f\n", A[i].IPK);
    }
}

void isiDataArr(Mahasiswa *A, int ukuran) {
    int i;
    char temp[20];
    for (i = 0; i < ukuran; i++) {
        printf("Masukan Noreg : ");
        scanf("%s", A[i].noreg);
        getchar();
        printf("Masukan IPK   : ");
        scanf("%f", &A[i].IPK);
        getchar();
    }
}

int n;

int main(void) {
    printf("masukan jumlah data :");
    scanf("%d", &n); //this part
    Mahasiswa PTIK[n];
    isiDataArr(PTIK, n);
    printf("\n");
    showDataArr(PTIK, n);
    //getch();
}

<强>测试

masukan jumlah data :2
Masukan Noreg : 123qwe
Masukan IPK   : 123
Masukan Noreg : 234wer
Masukan IPK   : 234

Mhs ke 1
    Noreg : 123qwe
    IPK   : 123.00
Mhs ke 2
    Noreg : 234wer
    IPK   : 234.00