Hirdetés
- Mr Dini: Mindent a StreamSharkról!
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- gban: Ingyen kellene, de tegnapra
- WireGuard VPN a mindennapokra
- Meggyi001: Kórházi ellátás: kuka vagy finom?
- gerner1
- eBay-es kütyük kis pénzért
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
Új hozzászólás Aktív témák
-
Jester01
veterán
Az fscanf szintaxisa 2 karakter beolvasására: fscanf(bemeneti fájl neve, "%c %c", &a, &b)
Nem a fájl neve kell oda, hanem a megnyitott fájl pointer. Karakter olvasáshoz az fgetc függvényt kell használni ami szintén a fájl pointert kapja és visszaadja a soron következő karaktert. A getchar() ekvivalens egy fgetc(stdin) hívással, vagyis az a standard inputról olvas ezért nem kell neki fájl.
Példa:
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE* f = fopen(argv[1], "rb");
int ch;
while((ch = fgetc(f)) != EOF) putchar(ch);
fclose(f);
return 0;
} -
Jester01
veterán
Mégpedig azért, mert a scanf egy borzasztó rossz függvény terminálról olvasáshoz.
Ha debuggerrel vagy egy kiíratást betéve megnézed mi lesz a gyalog változód valószínűleg egyből kiszúrod, hogy bizony a bástya bekérés után a pufferben maradt egy (vagy kettő) soremelés karakter és az kerül oda.Gyors megoldásként ha a második scanf formátumstring elejére teszel egy szóközt akkor már jó lesz. (Persze ahogy cucka kollega mondta, csak simán az értékeket hasonlítsd össze.)
Beolvasáshoz amúgy fgets és sscanf párosa ajánlott, megfelelő hibakezeléssel.
-
cucka
addikt
El kéne olvasni, hogy az strcmp hogy működik:
int strcmp(const char *s1, const char *s2);
Tehát két darab char* típusú változót kér paraméternek, a te programodban pedig két char típusú változóval próbálod meghívni.
Char típusú változókat pont úgy tudod összehasonlítani, mint ahogy sima int-eket hasonlítasz, tehát alapvetően ebben a programban semmi szükség az strcmp függvényre. A char típus egy darab karaktert jelent ugyan, de felfoghatod úgy is, mint egy előjel nélküli egész számot, mert tulajdonképpen az. -
jattila40
tag
A fügvénynek csak egy visszatérő értéke lehet, és az sem akármilyen típusú. Ha felszín és térfogat is kell, akkor írhatsz egy void fv.-t (eljárást), aminek 4 paramétere lesz, valahogy így:
#include <stdio.h>
#define PI 3.141592654void felszin_terfogat(float sugar, float magassag,float *felszin, float *terfogat)
{
if(felszin==NULL || terfogat==NULL)return;
*felszin=2*sugar*PI*(sugar+magassag);
*terfogat=sugar*sugar*PI*magassag;
}void main(int argc, char*argv[])
{
float sugar,magassag,felszin,terfogat;if(argc<3){
printf( "henger felszinet es terfogatat szamolja ki a program\r\n\
parancssori argumentumokkal is hivhato: <programnev> <sugar> <magassag>\r\n");
printf("sugar: ");
scanf("%f",&sugar);
printf("magassag: ");
scanf("%f",&magassag);
}
else{
sugar=atof(argv[1]);
magassag=atof(argv[2]);
}felszin_terfogat(sugar,magassag,&felszin,&magassag);
printf("felszin: %10.5f\r\n",felszin);
printf("terfogat: %10.5f\r\n",terfogat);
} -
Lortech
addikt
Szerintem érdemes két külön függvényt írni a két számításra, ezzel elkerülve a problémát.
A return valóban egy értéket ad vissza, de ez az érték lehet akár egy memória cím is, ami egy tömbre, listára, struktúrára stb. mutat, ami bármennyi értéket takarhat.
Voiddal is megoldható - ha konkrétan ez volt a feladat -, de akkor átmenő paramétert vagy globális változót kell alkalmaznod (ezt csak a lehetőség miatt említettem, ne így csináld). Ez pl. úgy néz ki, hogy egy mutatót adsz át paraméterként, és az általa mutatott értéket megváltoztatod a kivánt értékre az eljárás végrehajtása során, majd az értéket felhasználod.pl.
"r változó mint mutató deklarálása, inicializálása";
függvényhívás(r (címe),...,...);
eredmeny = r (értéke);Kódot szándékosan nem írok, mert ebben a stádiumban szerintem jobb, ha te magad fedezed fel ezeket a fogalmakat.
-
Lortech
addikt
Kiemeled hogy void függvény, pedig a void mint típus, ill. típus "hiánya" éppen procedúrát jelent, nem függvényt, nincs visszatérési értéke, ezért a "felszin=A..."
értékadó kifejezés nyilvánvalóan hibás. A függvénynek egy megfelelő (2*PI*r*(r+h) -vel kompatibilis) adattípust kell megadnod visszatérési érték típusának void helyett.
(szerk: és persze vissza is kell térned a függvényből a visszatérési értékkel a return kulcsszóval)
Ú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!
- Gamer PC-Számítógép! Csere-Beszámítás! I5 10500T / RTX 3050 / 32GB DDR4 / 512 SSD!
- BESZÁMÍTÁS! Apple iPad Pro 13 2024 M4 16GB/2TB WiFi tablet garanciával hibátlan működéssel
- Telefon felvásárlás!! iPhone 13 Mini/iPhone 13/iPhone 13 Pro/iPhone 13 Pro Max
- Apple iPhone 15 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy S23 Ultra 5G 512GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Nemigazán értem a c nyelvben a velük történő műveleteket.Előre is köszi.
Van amikor szinte majdnem minden sor után oda kell biggyeszteni egy kiírást, mikor már télleg nem tudod, hogy mit rontottál el 

