Hirdetés
Köszönjük a sok biztatást, támogatást! Egy rövid ideig még féláron tudsz hirdetni, előfizetni!
Új hozzászólás Aktív témák
-
Karma
félisten
Mivel a fordító számít, így legrosszabb esetben is csak kétféle viselkedést tapasztaltál volna (a CB-féle sajáttal meg a többi fordítóval). Elég egyértelmű így a stack overflow, amit a hatalmas struktúrával idézel elő.
Azért ha meg is kell védened ezt a házit, jobb lenne ha átállnál mallocolt struktúrákra...
-
Jester01
veterán
A scanf("%s") ugyanúgy nem ellenőrzi a hosszt, tehát túlcsordulás veszélyes.
Hogy a program miért nem működik azt már a #3603-ban leírtam. A scanf hagyja a pufferben a sorvéget ezért a rákövetkező fgets üres sort lát. A mostani kóddal ezért a település neve lesz üres.
Az ember azt hinné az adatbevitel egyszerű, de ez sajnos nem így van
Mivel mindenhol sorokat akarsz olvasni, mindenhol fgets kell és máris jó lesz. Persze igazából egy hibakezelős verzió kellene, ami észreveszi, ha több betűt ír be a lökött felhasználó.
Például valami ilyesmi jöhet szóba.
-
Karma
félisten
Azért nem kéri be a házszámot, mert a gets az stdin pufferben hagyja az újsor karaktert, amit az enterlenyomás otthagy - így a következő olvasás azt hozza be a felhasználóra várás helyett.
Azt egy külön getcharral el kell nyelned puszta kézzel.
Egyébként a település nevében is lehet ám szóköz.
-
e=mc²
őstag
Megprobaltam gets()-el, es igy modositottam a kodot:
struct cel_allomas Beker_Cel(){
struct cel_allomas l_cel;
char str[NEVHOSSZ];
printf("Telepules neve:\n");
scanf("%s", l_cel.telepules);
printf("Kozterulet neve:\n");
gets(str);
strcpy(l_cel.kozterulet, str);
printf("Hazszam:\n");
scanf("%s", l_cel.hazszam);
return l_cel;
}viszont miert kapok olyan hibat, hogy a hazszamot mar nem keri be, hanem atugorja?
-
Jester01
veterán
Ahogy mondod
Mivel a main a kapcsolat a futo és a futolepes között, így először futo-ból kellene visszaadni a main-be, majd onnan tovább. A helyzetet bonyolítja, hogy 2 értékről van szó. Egy lehetséges megoldás ha definiálsz egy struktúrát a két értéknek és azt adogatod, valahogy így:struct pozicio
{
int sor;
int oszlop;
};
struct pozicio futo(char tabla[TABLA_MERET][TABLA_MERET], char input[3])
{
struct pozicio p;
...
return p;
}
...
void futolepes(char tabla[TABLA_MERET][TABLA_MERET], struct pozicio p)
{
...
}
...
int main()
{
struct pozicio p;
...
p = futo(tabla, input);
gyalog(tabla, input);
futolepes(tabla, p);
...
}A naív megoldás persze a globális változók használata lenne, de az általában nem ajánlott.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Fujifilm X
- Szívós, szép és kitartó az új OnePlus óra
- Motoros topic
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Napelem
- One otthoni szolgáltatások (TV, internet, telefon)
- VR topik (Oculus Rift, stb.)
- ZIDOO médialejátszók
- Genshin Impact (PC, PS4, Android, iOS)
- Milyen videókártyát?
- További aktív témák...
- Azonnali készpénzes nVidia RTX 4000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- Acer Aspire Vero - AV15 - 15.6"FHD IPS - i5-1235U - 16GB - 512GB - Win11 - 2+ év garancia
- Dell Latitude 5330 i3-1215U 6magos! - 16GB 512GB 13.3" FHD magyarbill 1 év garancia
- Dell Latitude 5330 i3-1215U 6magos! - 16GB 256GB 13.3" FHD magyarbill 1 év garancia
- Samsung Galaxy Watch 6 SM-R940 44mm Bluetooth Graphite okosóra eladó!
- Telefon felvásárlás!! Samsung Galaxy A12/Samsung Galaxy A22/Samsung Galaxy A32/Samsung Galaxy A52
- Dell Optiplex 7050 SFF + Quadro K620
- Asus ROG X13 Flow 2in1 Touch WUXGA 120Hz Ryzen9 5900HS 16GB 1TB SSD Nvidia RTX 3050Ti Win11 Garancia
- Thomson Streaming Box 240 TV okosító / Számla / Garancia /
- GYÖNYÖRŰ iPhone 13 Pro 128GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS3082
Állásajánlatok
Cég: FOTC
Város: Budapest