【发布时间】:2016-06-05 20:57:54
【问题描述】:
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 但是其余数组将正常运行
【问题讨论】:
-
说真的,发布图像链接比将文本粘贴为文本更容易? 将文本发布为文本,而不是图像!
-
如果 n 为 0...?!你认为第一行代码会做什么?
-
Mahasiswa PTIK[n]。这显然是错误的,因为n在该声明点为 0。所以你的数组大小为 0。 -
另外,它应该是
int main(void)。你的编译器应该抱怨这个。 -
你应该得到一堆“缺少声明/原型”(或类似的)警告。提供一个minimal reproducible example,它编译时没有警告。运行产生警告的代码是没有用的(对于初学者)。