Hirdetés
- Milyen TV-t vegyek?
- Kész, vége, ennyi volt: eladja tévés üzletágát a Sony
- Vezeték nélküli fülhallgatók
- Amlogic S905, S912 processzoros készülékek
- Samsung LCD és LED TV-k
- Bluetooth hangszórók
- Házimozi belépő szinten
- Milyen billentyűzetet vegyek?
- Az elmúlt 30 év legjobb processzorai
- RGB-s, LCD-kijelzős VGA-tartó olcsón? Hol kell aláírni?
Új hozzászólás Aktív témák
-
VaZso
senior tag
válasz
Jester01
#1601
üzenetére
Értem, ill. jól gondoltam...

Azért nem tudom előre a hosszát, mert egy fileból olvasom ki az értékeket.Annak sem lenne sok értelme, ha globális szinten tárolnám egy változóba, mert listák közül is lehet akármennyi.
Ez lett belőle:
int ptLen(char **data) {
if (!data)
return 0;
int i=0;
while (data[++i])
;
return i-1;
} -
VaZso
senior tag
válasz
Jester01
#1595
üzenetére
Köszi, úgy tűnik, valahogy a deklarációm nem fért össze azzal, amit csinálni akartam...

Így nézett ki: char *data[cnt];
Ugye jól sejtem, hogy a tömb elemszámának "lekérdezésére" nem igazán van jobb módszerem, mint az n+1. elemet NULL-ra állítani és erre vizsgálni?
Köszi mégegyszer, most jónak tűnik a függvényem működése.
-
VaZso
senior tag
Lehet, hogy rosszul fogom meg a dolgot, de a következő problémám támadt:
Van egy **Getlist nevezetű függvényem, ami feladata egy szövegfileból összeszedni a vesszővel elválasztott adatokat és arra beállítani a pointertömb elemeit...
Tehát egy lefoglalt memóriaterületen rendelkezésemre állnak az értékek.
A lista elemeinek pointerét a megfelelő pozícióra állítom, ill. a vesszők helyét '\0'-lal lezárom.Elviekben minden ok, de nem tudom, hogy allokáljak memóriát a pointertömbnek.
...vagyis erre gondoltam, de ez nagy hülyeségnek tűnik /mondjuk ez egy makrót hív, de elvileg ez lényegtelen/:MALLOC (*data, sizeof(char *) * cnt);
Tehát van egy *data[cnt] nagyságű pointertömböm, ennek szeretném lefoglalni a tömb egyes mutatói címének letárolásához szükséges memóriaterületet.
Hogy kéne ezt csinálnom? -
VaZso
senior tag
-
VaZso
senior tag
válasz
skoda12
#1493
üzenetére
Upsz... még mindig nem vagyok "képben"...
Itt kicsit más értékek vannak, mint amit a gépemen tapasztaltam.
Vélhetően azért, mert ez x64-es rendszer.Mégjobban elbizonytalanodtam, hogy az egyes változóknál milyen tartományt kéne figyelnem, hogy ne csorduljon túl...
Eszerint 32-bites rendszeren a short és az int is 2 byte-os és a long 4 byte-os?
Float működése ill. határai még mindig nem tiszta...
-
VaZso
senior tag
Sziasztok!
Kicsit megkavarodtam... Feladatom, hogy egy config fileból beolvassak különféle változókat.
Kicsit elveszettnek érzem magam abban, hogy milyen változótípus milyen tartományokban működik és akkor még fel sem merült, hogy esetleg más architektúrán mi a különbség...
Tehát:
short: 2 byte-on tárol --> 2^16-1, ill. ha az első bit az előjelbit, akkor -32768 - 32767-ig terjed.
int: 4 byte-os --> 2^32-1 ...
long: 8 byte-os --> 2^64-1 ...
float?
double?
Hogy kezeljem? Mik a határai?
Nem igazán találtam értelmes adatot.Sima C-vel próbálkozom.
-
VaZso
senior tag
Köszönöm a választ.
Tehát ha jól értem, balról jobbra haladva értékeli ki a feltételek igazságtartalmát és ha valahol egyértelműsödik a helyzet, dönt a végrehajtásról...Ezesetben érdekes lehet még, hogy ha vagy kapcsolat van közöttük és az első feltétel teljesül, akkor pl. a második feltételben lévő x++ nem lépteti el a pointert...
...mondjuk ez alapján pedig már rég letesztelhettem volna hülyeségek kérdezése helyett...
-
VaZso
senior tag
Sziasztok!
Egy rövid kérdéssel szeretnék zavarni...

if-nél, ha pl. több feltétel és kapcsolatát adom meg és az első feltételnél elbukik a dolog, akkor ugye nem nézi meg a második feltételt is?
Erre gondolok pl.:
if ((c==*pattern) && (strDif(str, pattern, patlen)==-1)) ...
Fölösleges az strDif függvényt meghívnom, ha a másik feltétel úgysem teljesült...
Jól gondolom, hogy ez esetben nem hívja meg? -
VaZso
senior tag
válasz
Jester01
#1250
üzenetére
Eszerint ott lehet a kutya elásva, hogy nem módosítható?
*ptr = 'n'; (ill. str) hatására Segmentation fault-ot kapok...Egy ilyenem van:
char *strCapitalize(char *str) {Tehát a paraméterként kapott *str-t hiába is próbálom megváltoztatni...
Hogyan tudnám mégis valamely characterét megváltoztatni úgy, hogy nem tudom előre a string hosszát és csak ezért nem nyálazhatom végig?

-
VaZso
senior tag
Sziasztok!
Eddig nem programoztam C-ben. Van néhány rutin, amit meg kellene írnom, de kicsit elakadtam, ahogy sorjában haladtam velük... A kérdésem amatőrsége ebből fakadóan adott...
Maga a rutin nem tűnik bonyolultnak - egy kapott string első character-ét kell kapitalizálni.
A string, ill. visszatérési érték pointeren kersztül kerül átadásra.Amin elakadtam: a pointer aktuális helyzetén lévő adatot hogy tudom megváltoztatni?
pl. adott egy char *ptr nevű pointer, ami az "alma" szóra mutat.
Szeretném kicserélni mondjuk az m betűt n-re. A pointer az m fölé mutat. Hogy adom meg neki az n értéket úgy, hogy a többi characterhez nem nyúlok?Rosszul állok a feladathoz?
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Milyen TV-t vegyek?
- Tiltott lett Lufthansa-csoport repülőin power bankot használni
- EAFC 26
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Kész, vége, ennyi volt: eladja tévés üzletágát a Sony
- Samsung kuponkunyeráló
- Vezeték nélküli fülhallgatók
- Kínai és egyéb olcsó órák topikja
- Amlogic S905, S912 processzoros készülékek
- sziku69: Fűzzük össze a szavakat :)
- További aktív témák...
- Eladó Logitech G29 + Logitech H váltó!
- P1 Gen6 16" FHD+ IPS i7-13800H RTX A1000 32GB 1TB NVMe ujjlolv IR kam gar
- T14s Gen2i 14" FHD IPS i7-1165G7 16GB 512GB NVMe ujjlolv IR kam új akku gar
- T14s Gen1 14" FHD IPS érintő Ryzen 7 PRO 4750U 16GB 256GB NVMe ujjlolv IR kam gar
- Vadonatúj iPhone 14 PRO 256GB space black KÁRTYAFÜGGETLEN! 2027 január 15-ig Apple garancia!!!
- Akció!!! Lenovo ThinkPad P15 Gen 1 Intel i7-10875H 32GB 1000GB Nvidia Quadro RTX 3000 1 év garancia
- ÁRGARANCIA!Épített KomPhone Ryzen 9 5900X 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Xbox One S 512 GB + kontroller 6 hó garancia, számlával!
- í kilenc! AKCIÓS PRECÍZIÓS KÉSZÜLÉK! 7560 i9-11950H 32GB RAM 1TB SSD Nvidia RTX A3000 6GB 1 év gar
- Xiaomi Redmi Note 12 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs





