Jump to content
GSForum - Segélyvonal

Programozás C/C++-ban


Recommended Posts

Posted

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?

Posted

Belefordul a kódba a sortörés.

Kovács Dávid ( Davs )
Posted

A megfelelõ karakter a \n helyére egy white space, egy szóköz ;)

Posted

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. ;)

Posted

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.

Posted

Í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.

Posted

A fordító a \n-bõl 10-es (0x0A) kódot készít, amit a printf újsorként hajt végre.

Posted

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!

Posted

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.

Posted

Holnap lesz az elsõ órám, és akkor ott megkérdezem a tanárt. Az lesz a biztosabb.

Azért köszi!

Posted

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.

Posted

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).

Posted

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;

 

}

Posted

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;

 

}

Posted

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!

Posted

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.

Posted

Í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.

Posted

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.

Posted

Szívesen.

A MingW-t a DEV C++-szal használod?

Posted

Csak a MinGW Developer Studio-t. Miért kéne együtt használni?

Posted
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. ;):)

Posted

Vao! Az elsõ C órám után értem, hogy mit magyaráztok :) Ez tetszik!

Posted

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.

Posted

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.

Posted

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.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...