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 然而,其余数组将正常运行
答案 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