Mi a hiba az alábbi programkódban?
Nem tudok rájönni hol a hiba :D
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv) {
int i = 0, j = 0;
struct felhasznalo {
char nev[20];
int eletkor;
};
struct felhasznalo diak[5];
do {
printf("neve: ");
scanf("%s", diak[i].nev);
printf("kora: ");
scanf("%d", diak[i].eletkor);
i++;
} while (i < 5);
i = 0;
do {
printf("Az 1. diák neve: %s, életkora: %d", diak[i].nev, diak[i].eletkor);
i++;
} while (i < 5);
return (EXIT_SUCCESS);
Miért, mi a hiba jelenség?
Fordítási hiba van? Mit ír a fordító?
Futás közbeni hiba van? Mit ír ki, vagy mi működik másképp, mint várnád?
scanf("%d", &diak[i].eletkor);
A fenti sort javítottam. Kimaradt az & jel. Mert ugye a memóriacímet kell megadni, ahova beolvassa. Stringnél működik, de integernél kell elé az & jel.
2 hiba van benne - ezeket a fordító ki is jelzi:
1. scanf("%d", diak[i].eletkor); - mint előzőleg említették, a scanf memóriacímet vár (A GCC fordító hibaüzenete: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]).
Szóval helyesen:
scanf("%d", &diak[i].eletkor);
2. A legvégéről hiányzik a záró kapcsos zárójel (}).
Pár javaslat:
* A bevitelkor add meg, hogy PONTOSAN mit kérsz be.
Szóval ezek helyett:
printf("neve: ");
printf("kora: ");
Inkább ez:
printf("%d diák neve: ",i);
printf("%d diák kora: ",i);
Meg az elején - a cikluson kívül - felszólíthatod a felhasználót:
printf("Add meg a diákok adatait!\n");
* A kiíráskor a sorok végén tegyél sorvége jelet - nélküle összefolyik az egész:
printf("Az 1. diák neve: %s, életkora: %d\n", diak[i].nev, diak[i].eletkor);
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!