|
| Lidt hurtig hjælp med brug af int i en st~ Fra : Jesper Staun Hansen |
Dato : 07-05-07 08:39 |
|
hello
Jeg har følgende i en header fil:
struct {
int id;
char firstName[160];
char lastName[160];
char sex;
int age;
int department;
int surveyAnswers;
} data;
Og så har jeg følgende stump kode i min main:
printf("\nFill in your age: ");
scanf("%i", data.age);
Resultatet er en segmentation fault.
Hvis jeg dog sætter:
int age[1]
så kører den fint.
Dog senere i koden:
while(data.department < 1 || data.department > 21) {
printf("\nFill in your institute number. Type L to list institutes: ");
scanf("%i", data.department);
sleep((int) 3);
printf("\nXXX %c XXX %i XXX", data.department, data.department[0]);
if(data.department == 76) {
printf("\n\nInstitut for Sociologi, Socialt Arbejde og Organisation
(1)");
printf("\n.......");
}
}
Første gang jeg trykker L så sker følgende:
Fill in your institute number. Type L to list institutes: L
XXX � XXX 0 XXX
Fill in your institute number. Type L to list institutes:
XXX � XXX 0 XXX
Fill in your institute number. Type L to list institutes:
XXX � XXX 0 XXX
Fill in your institute number. Type L to list institutes:
XXX � XXX 0 XXX
Fill in your institute number. Type L to list institutes:
XXX � XXX 0 XXX
Altså, en uendelig while loop hvor den springer scanf over. Hvorfor får
den lige lyst til det?
Hvis jeg derimod bare skriver et tal ind, så giver den det rigtige
resultatet ud, men ikke for det L.
Hvorfor sker dette?
| |
Leo Havmøller (07-05-2007)
| Kommentar Fra : Leo Havmøller |
Dato : 07-05-07 11:53 |
|
> scanf("%i", data.age);
scanf("%i", &data.age).
Leo Havmøller.
| |
|
|