Új hozzászólás Aktív témák
-
3man
csendes tag
Mivel nem en vok Chuck Norris, ezert nem fogom fejben debuggolni a progit.
A szokasos eljaras, hogy egy tesztelo reszt irsz hozza. Meghivod ket egyenlo stringgel, majd egyrovidebb/egyhosszabb es forditva stringgel. Ha eletben marad a kod, es az eredmeny amit kiir helyes, akkor kesz.
-
3man
csendes tag
int strcmp(char *a;char*b){
char res;
whil (1);
if ((res=(a-b++))|!a++)
break;
return res;
}Ha megtanulnad azt a par jelolest, ami ebben a rovid valamiben talalhato, mar tudnad mi a baja.
A 'res' 'char'-kent van definialva az 'a' es a 'b' 'char *'. Az = ertekadasnal legtobbszor a ket oldal tipusa egyenlo. Hogy lesz a 'char *a'-bol 'char'? Mar valahol leirtam, a definicio megmondja 'char , *a' -ra is fel lehet bontani, meg 'char* , a'-ra . Tehat az 'a' az mutato a '*a' az char. Egyszeru.
A c megengedi a nagyon tomor kod irasat, de ez nem celravezeto. Evek mulva ha eloveszed a kodot, egy eleg osszetett sornal gondolkozni kell, hogy hogyan is gondoltad ezt annak idejen. Atlathato egyszeru kodot kell irni, ami konnyen modosithato. Ilyen elemi szinten nem mindig kell modositani egy programot, de akkor is az a helyes ut. Es ugy kevesebb a hibalehetoseg is.
-
Jester01
veterán
-
3man
csendes tag
Ez nagyon alapszint, gondolom azert nem valaszolt senki.
Ha mar alapszint. Mikor mutato valami, es mikor char?
Ehhez csak a definiciot kell mindig megnezni.
Az str igy volt definialva
int strlen(char *str)
Ezt fel lehet bontani tobbfelekepp.
char * , str
char , * str
Ebbol mar latszik, mikor mit jelent a kifejezes. Ha csak str-t irok, akkor az char *
ha *str-t, akkor az char.Lehetne ilyen is a definicio
char **str
Ekkor tobb felbontasi lehetoseg kinalkozik. De a definiciobol mindig lehet tudni, mit jelent az adott kifejezes. Az utobbinal **str az char tipust ad, mig *str egy char *-ot.A c nyelvben a mutato egyben egy tomb elso elemere is mutat.
Tehat a char *str megegyezik a char str[] definicioval. Ebbol kovetkezik, hogy minden mutatot indexelhetunk, mint egy tombot, es minden tomb neve egyben mutato, ami egy cimet tarol. -
3man
csendes tag
Az utolso sor az esetek 99.99 szazalekaban jol mukodik, de..
A cim 32 bites lehet, ahogy az int is, de az int elojeles. Ez problemat okozhat, ha a str joval 0x7fffffff alatt van, mig a karakterlanc vege joval 0x8000000 folott.
Ekkor az int-re konvertalasnal az elso szam pozitiv lesz, mig a masodik negativ., es a kulombseguk is negativ, ha a karakterlanc eleg nagy. Gyakorlatilag nem lehet akkora karakterlancot letrehozni, hogy a hiba elojojjon, de ez akkor is hiba.
A visszateresi erteknek unsigned int-nek kellene lennie.erdemes probalgatni, mikor lesz negativ az eredmeny, es mikor nem.
int a=0xbfffffff;
a-=0x30000000;
printf("%d \n",a); -
3man
csendes tag
Adott a feladat:
int strlen(char*str){
char*tmp=*str;
if(!strt)
return 0;
while(str+#);
return*str-*tmp;
}Eloszor is
1.)tmp egy cim, mig *str egy char
2.)nincs olyan hogy strt
3.4) while(str+#); ebbol a sorbol hianyzik egy * es egy +
5.) a visszateresi ertek int,es nem charint strlen(char *str){
char *tmp=str;
if(!str)
return 0;
while(*str++);
return str-tmp;
}
vagy inkabb
return (int)(str-tmp);
Ú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!
- LEGO klub
- Google Pixel 8 Pro - mestersége(s) az intelligencia
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Debrecen és környéke adok-veszek-beszélgetek
- Milyen routert?
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Elektromos autók - motorok
- Anime filmek és sorozatok
- További aktív témák...
- SZÉP Lenovo ThinkPad P15 G2 Tervező Laptop -75% 15,6" i9-11950H 64/2TB RTX A4000 8GB UHD OLED
- Szép! Lenovo Thinkpad T14s G2 Üzleti "Golyóálló" Laptop 14" -50% i7-1185G7 4Mag 16GB/512GB FHD IPS
- Eladó Apple MacBook Pro 13" A1706 (Late 2017, Silver - EMC 3163)
- Amazfit GTR 2 Classic okosóra dobozában töltőkábellel
- Mac mini M1 chip 8 magos CPU-val, 8 magos GPU-val
- Konica Bizhub C220 - A3 fénymásoló
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- Csere-Beszámítás! RTX Számítógép játékra! R5 5600X / RTX 3080 / 32GB DDR4 / 1TB SSD
- Lenovo magyar laptop billentyűzetre van szükséged? Akármelyik verzióban segítünk!
- Felújított számítógépek/merevlemezek Számlával, garanciával! Ingyen Foxpost!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest