csutomi 0 Share Posted August 30, 2005 Nekem egy olyan kérdésem volna, hogy lehet olyat csinálni, hogy például: char proba="Hello\nvilag"; Ha ezt kiíratom valamivel, pl: MessageBox vagy printf, akkor ugyebár két sorban jelenik meg így: Hello vilag A kérdésem az lenne, hogy azt, hogy a szöveg két sorba jelenjen meg maguk a függvények végzik el, vagy pedig a fordító futtatás elõtt eleve behelyettesíti a megfelelõ karaktert a \n helyére? Link to comment Share on other sites More sharing options...
arpsoft 12 Share Posted August 30, 2005 Belefordul a kódba a sortörés. Link to comment Share on other sites More sharing options...
Kovács Dávid ( Davs ) 0 Share Posted August 30, 2005 A megfelelõ karakter a \n helyére egy white space, egy szóköz Link to comment Share on other sites More sharing options...
arpsoft 12 Share Posted August 30, 2005 Persze, ha egy sorba akarja írni. De nem ez volt a kérdés, hanem az, hogy a fordító lefordítja-e a kódba, vagy az oprendszer tudja, hogy két sor. Link to comment Share on other sites More sharing options...
csutomi 0 Author Share Posted August 31, 2005 Pontosabban az, hogy a fordító saját magától tudja, hogy a "\n" entert jelent vagy például a printf függvényt írták meg úgy, hogy ha a stringben "\" jelet talál és "n" van utána, akkor ezeket szedje ki a stringbõl és a két karakter helyett tegye be az enter kódját. Akkor, ha jól értem arpsoft válaszát, az elõbbi verzió az igaz. Link to comment Share on other sites More sharing options...
arpsoft 12 Share Posted August 31, 2005 Így van, iletve mindkettõ igaz. A C alapú nyelvekben (pl PHP) a \-es kódok vezérlõkarakterek. A \t például a tabulátor. Az ezeket feldolgozó függvények vannak úgy kitalálva, hogy a kiírást ennek megfelelõen formázzák, viszont ezeket a függvényeket meg a fordító (most mindegy, hogy compiler vagy interpreter) a proci számára hetõ utasításokká alakítja. Tehát, a fordító is és a függvény is benne van a dologban. Link to comment Share on other sites More sharing options...
Lex 1 Share Posted September 1, 2005 A fordító a \n-bõl 10-es (0x0A) kódot készít, amit a printf újsorként hajt végre. Link to comment Share on other sites More sharing options...
Gereby 0 Share Posted September 3, 2005 Sziasztok! Olyan kérdésem lenne, hogy: Suliban mostantól majd C-t fogunk tanulni... és, hogy most a PCW segítségével belekezdtem a C#-ba fölmerült bennem az, hogy nehogy összekavarjam magam. Tehát kérdésem a következõ: A síma C és a C# között mi a külömbség? Van valami átfedés, vagy netán # az egy bõvített C vagy hogy van ez? Elõrre is köszi! Link to comment Share on other sites More sharing options...
csutomi 0 Author Share Posted September 5, 2005 Talán a legnagyobb különbség, hogy míg a C# objektum orientált, addig a C nem. Én ugyan a C#-ot nem ismerem annyira, de ha jól tudom, akkor annak is a C az alapja hasonlóan a C++-hoz. A C és a C# két különbözõ programozási nyelv. Link to comment Share on other sites More sharing options...
Gereby 0 Share Posted September 5, 2005 Holnap lesz az elsõ órám, és akkor ott megkérdezem a tanárt. Az lesz a biztosabb. Azért köszi! Link to comment Share on other sites More sharing options...
horukk 0 Share Posted September 6, 2005 Sziasztok. C-ben szeretném megírni a saját my_strcpy() függvényt. ( strcpy(c,"string") a függvény az elsõ paraméterként megadott tömbbe másolja a második paraméterként megadott karakterláncot) Azon a ponton elakadtam, hogy a paraméterként megadott sztringet nem tudom átadni a függvénynek. Egy darab karakter átadása megy, de string átadása nem. Kérem segítsen valaki. Köszi. Link to comment Share on other sites More sharing options...
Lex 1 Share Posted September 6, 2005 Talán írd le ide, amit eddig csináltál, hogy ki tudjuk javítani, mert akár mi is megírhatjuk a progit (pár sor), de abból nem tanulsz. Egyébként valahol a char, char * -nál lesz a hiba (így látatlanban). Link to comment Share on other sites More sharing options...
horukk 0 Share Posted September 6, 2005 Kösz a gyors reagálást. Elsõ nekifutásra a stringet ('52') szeretném berakni a c[] tömbbe. Nem igazán akar összejönni. Ha a paraméterként megadott string helyett változót használnék, úgy talán menne a dolog. A változónak van címe, azt át tudnám adni. De a stringnek nincs. És a feladat a string átadásról szól. #include<stdio.h> #include<conio.h> #include<string.h> char c[10]; char *sp; sp=c; //sp pointer c[0] elemére mutat. int my_strcpy(char sp){ printf("\n%c",c[0]); return 1; } int main(){ /*printf("\n%c",c[3]); *(sp+3)='5'; printf("\n%c",c[3]);*/ my_strcpy('52'); return 1; } Link to comment Share on other sites More sharing options...
horukk 0 Share Posted September 6, 2005 Itt van a változó átadás, az mûködik. #include<stdio.h> #include<conio.h> #include<string.h> char c[3]={'A','2','3'}; char *sp; int my_strcpy(char *_e){ printf("\n%c",*_e); return 1; } int main(){ sp=c; /*printf("\n%c",c[3]); *(sp+3)='5'; printf("\n%c",c[3]);*/ my_strcpy(sp); return 1; } Link to comment Share on other sites More sharing options...
Lex 1 Share Posted September 6, 2005 Már bocs, de itt sehol se látok string másolást. És az elõbb, még kétparaméteres fv-t írtál. Maradj az eredeti elképzelésnél. Átadsz egy stringre mutató pointert és egy konstans stringet (string literált). Ezt dolgozd fel. Ügyelj a típusokra. Tipp: stringet csak karakterenként lehet másolni! Link to comment Share on other sites More sharing options...
horukk 0 Share Posted September 6, 2005 A feladat valóban 2 paraméteres, de elõbb a sztring átadást szeretném megérteni. Azt szeretném elérni elsõ nekifutásra, hogy pl: my_strcpy('abc') paramétere kerüljön át egy tömbbe a függvény törzsébe. Ha nem az 'abc' szrtinget szeretném átadni, hanem mondjuk egy változót, karaktertömböt, az megy. De a multi character az nem. Link to comment Share on other sites More sharing options...
Lex 1 Share Posted September 6, 2005 Így mûködik neked? int my_strcpy(char *str){ printf("\n%c",*str); return 1; } int main(){ my_strcpy("alma"); return 1; } Milyen fejlesztõ környezetben dolgozol? Ja, bocs csak most látom: ' - aposztróf közé, csak karaktert (értsd: 1 karaktert) lehet írni. Ha string konstanst akarsz megadni, akkor "- idézõjelek közé kell tenni, mert így a stringet lezárja egy '\0' karakterrel. Link to comment Share on other sites More sharing options...
horukk 0 Share Posted September 6, 2005 MinGW a környezet. Igen, mûködik. Így már el tudom tárolni a stringet a függvény törzsében egy tömbbe. A mutatót növelem 1-gyel. Köszönöm, nagy segítség volt. Link to comment Share on other sites More sharing options...
Lex 1 Share Posted September 6, 2005 Szívesen. A MingW-t a DEV C++-szal használod? Link to comment Share on other sites More sharing options...
horukk 0 Share Posted September 6, 2005 Csak a MinGW Developer Studio-t. Miért kéne együtt használni? Link to comment Share on other sites More sharing options...
csutomi 0 Author Share Posted September 6, 2005 char c[3]={'A','2','3'}; @horukk: Ne haragudj a beleszólásért, csak volna két észrevételem a programoddal kapcsolatban. A fenti értékadást C-ben egyszerûbben is meg lehet tenni, így: char c[3] = "A23"; vagy így is: char c[] = "A23"; Másrészt ez azért sem célszerû megadási mód, mert a sztringet C-ben le kell zárni a '\0' karakterrel. Vagyis ha ragaszkodsz az eredeti megadási formához, amit írtál, akkor így jobb: char c[4] = {'A', '2', '3', '\0'}; A másik, hogy a main függvénynek soha ne adj 1-es visszatérési értéket, mert ez azt jelenti (elvileg), hogy a programod valamilyen hiba miatt állt le. Lást az exit(1) függvényt. A helyes érték a nulla. Link to comment Share on other sites More sharing options...
Gereby 0 Share Posted September 6, 2005 Vao! Az elsõ C órám után értem, hogy mit magyaráztok Ez tetszik! Link to comment Share on other sites More sharing options...
horukk 0 Share Posted September 6, 2005 Lex, frankón mûködik a my_strcpy() függvényem. Ezen felbuzdulva megcsináltam a my_strlen() függvényt is. Ezekbõl adódott egy kérdésem, ami a következõ lenne: Hogyan tudok készíteni fejlécfájlt a saját függvényekhez? Ha lenne mondjuk egy my_file.h fejlécfájlom, amiben szerepelne a fentebb említett két függvény, akkor elég lenne incude-olni, és már mûködnének is a függvényeim. Nem kellene minden programban megírni õket. Eme problémához is várom a segítõkész hozzászólásokat. Link to comment Share on other sites More sharing options...
horukk 0 Share Posted September 6, 2005 csutomi, kösz az észrevételt, ebbõl is tanultam. Ha jól sejtem, ez csak karaktertömbnél van így, mármint az értékadás. Link to comment Share on other sites More sharing options...
Lex 1 Share Posted September 6, 2005 string=karaktertömb char *alma="1234567890"; char alma[]="1234567890"; a két sor ekvivalens. A tömb neve, mindig egy, a tömb elemeire mutató, elem típusú,pointer. Fejlécfájlt a legegyszerûbb, de ronda módszer, ha magát a függvényt rakod bele. Ennek az a hibája, hogy egy progiban csak egyszer hívhatod be, mert kétszer nem definiálhatsz egy fv-t. A másik hiba, hogy a fordítónak mindig be kell fordítania, így nagyobb proginál sokáig tart. A szebb megoldás, hogy csak a fv. deklarációját helyezed el benne, ami a fv. elsõ sora (a fv. típusa, neve, paraméterei) és a kapcsos zárójel helyett ;-vel lezárod a deklarációt. Ekkor be #include-olhatod minden programodba, ügyelve arra, hogy az elkészült .obj tágymodulhoz hozzálinkeld a fv. lefordított tárgymodulját. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now