Hirdetés
- Milyen okostelefont vegyek?
- Fotók, videók mobillal
- Fittyet hány a pesti napfényre a Honor 600
- Apple iPhone 17 Pro Max – fennsík
- Samsung Galaxy A57 - kecses test, lusta lélek
- Apple iPhone 16 - ígéretek földje
- Bemutatkozott az Oppo kamerás csúcsmodellje
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- A Redmi is hozott kompakt táblagépet
- OnePlus 15 - van plusz energia
Ú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
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!
- Crimson Desert
- Okos otthon - Home Assistant, openHAB és más nyílt rendszerek
- Milyen okostelefont vegyek?
- sziku69: Szólánc.
- World of Tanks - MMO
- Konkrét moderációval kapcsolatos kérdések
- Eljött a CPU-k kora az AI-piacon
- Fotók, videók mobillal
- Anglia - élmények, tapasztalatok
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- További aktív témák...
- Audio technica ath adx5000 hifi fejhallgató extra kábelekkel
- SZINTE ÚJ Corsair Virtuoso RGB Wireless Bolti ár:75k INGYEN FOXPOST
- REVELAL K2Y-PRO16 16BIT ISA HANGKÁRTYA
- ÚJ! Raspberry Pi 4 Model B 4GB+táp+ ház+sd kártya+micro hdmi
- Intel Core ULTRA 9 285K +32GB 7600MHz Patriot Viper XTREME 5 DDR5 kit! (Bolti ár: kb 600ezer Ft!)
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest





