zdravím,
dneska jsem se setkal s velice zajímávým problémem, a to tím, že se mi ignorují v programu některé načítání pomocí funkce scanf (podobně se mi chová i gets).
Máme zdroják:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int volba = 0;
//osoba seznam[100];
char jmeno1[50];
char prijmeni[50];
char adresa[100];
char den[2];
char mesic[20];
char telefon[9];
char email[50];
int rok;
printf("Zadejte: \n1 pro vytvoreni osoby \n2 pro zruseni osoby\n3 pro najiti osoby \n4 pro tisk osoby\n9 pro ukonceni programu\n\nVase volba: ");
scanf("%d",&volba);
if(volba == 1){
printf("\n Zadejte jmeno osoby: ");
scanf("%s",&jmeno1[50]);
printf("\n jmeno %s", jmeno1);
printf("\n Zadejte prijmeni osoby: ");
scanf("%s",&prijmeni[50]);
printf("\n jmeno %s", jmeno1);
printf("\n Zadejte adresu osoby: ");
scanf("%s",&adresa[100]);
printf("\n Zadejte datum narozeni osoby (ve tvaru DEN MESIC ROK): ");
scanf("%s %s %i",&den[2],&mesic[20],&rok);
printf("\n Zadejte telefon osoby: ");
scanf("%9s",&telefon[9]);
printf("\n Zadejte email osoby: ");
scanf("%s",&email[50]);
printf("\n\njmeno: %s \n prijm %s \n adres %s \n nar %s %s %d \n tel %s \nmail%s \n",jmeno1,prijmeni,adresa,den,mesic,rok,telefon,email);
//vytvor_osobu(jmeno1,prijmeni,adresa,*den,*mesic,rok,telefon,email,seznam);
return 0;
}
else if(volba == 9){
return 0;
}
else {
printf("\nerror: neznamy prikaz\n");
return main();
}
}
při kompilaci mi to nehází žádné chyby ani nehlásí žádné varování, přesto, když mi najede program a zvolím si volbu tak, aby mi proběhla tahle podmínka (samo na tohle navazuje další spousta věcí, tak se mi ignoruje proměnná jméno1, viz tenhle screen:
http://img862.imageshack.us/img862/6523/tesths.png
no prostě vidíte sami, že mi do proměnné jméno načte to, co se mělo načíst do proměnné příjmení, atd atd.
A tak tedy nastává otázka, jak tohle mám vyřešit, zkoušel jsem nějaké prasečiny, ale ani ty nezabrali, přepsání scanfů na gets taky nepomůže (jmeno1 se úplně ignoruje), prohození pořadí taky nic (jen se ignoruje jiná proměnná) a já v tom zaboha prostě nevidím to, co mi způsobuje chybu (a nebo jsem tak blbý :D )...
děkuji za rady
ps: prostředí Codeblocks, kompilátor GCC