Programozás C nyelven (10a. ELŐADÁS) Sapientia EMTE

Hasonló dokumentumok
Programozás C nyelven (10. ELŐADÁS) Sapientia EMTE

Programozás C nyelven (13. ELŐADÁS) Sapientia EMTE

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

Programozás I gyakorlat. 10. Stringek, mutatók

Programozás I gyakorlat

Programozás 6. Dr. Iványi Péter

C string műveletek (string.h alkalmazása)

malloc free malloc free int sum(int a[4]) { return a[0] + a[1] + a[2] + a[3]; }

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Példák tematikus csoportosításban

Pénzügyi algoritmusok

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

INFORMATIKA tétel 2019

Karakter- és sztringkezelő függvények, matematikai függvények

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Programozás II. Fájlkezelés

Mutatók. Programozás I. Hatwágner F. Miklós február 26. Széchenyi István Egyetem, Gy r

Preprocesszor. Programozás alapjai C nyelv 11. gyakorlat. Makrók (2) Makrók (#define) Makrók (3) #include

Programozás alapjai C nyelv 11. gyakorlat. Preprocesszor. Makrók (#define)

7/8. gyakorlat Karaktertömbök és sztringkezelés

Példatár a Programozás 1 tárgyhoz

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Programozás II. 2. Dr. Iványi Péter

5. gyakorlat. Konstansok Tömbök Stringek

Körkörös listák. fej. utolsó. utolsó. fej

Járműfedélzeti rendszerek II. 5. előadás Dr. Bécsi Tamás

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Szövegek C++ -ban, a string osztály

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

INFORMATIKA tétel 2017

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

INFORMATIKA javítókulcs 2016

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Programozás 5. Dr. Iványi Péter

Programozás C nyelven (9. ELŐADÁS) Sapientia EMTE

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

INFORMATIKA tétel 2018

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

Országzászlók (2015. május 27., Sz14)

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Információs Technológia

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

7. gyakorlat Sorozatok, Fájlkezelés

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

1. Alapok. Programozás II

Programozás alapjai 9.Gy: Struktúra 2.

10. gyakorlat. Pointerek Tárolási osztályok

Dinamikus memóriakezelés Fájlkezelés

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Maximum kiválasztás tömbben

Rekurzió. Programozás alapjai C nyelv 9. gyakorlat. Rekurzív algoritmus. Rekurzív algoritmus fajtái. Példa: n! (2) Példa: n!

Programozás alapjai C nyelv 9. gyakorlat. Rekurzió. Rekurzív algoritmus

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

10. gyakorlat Tömb, mint függvény argumentum

Struktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája:

Megoldott programozási feladatok standard C-ben

Mutatók. Programozás II. Hatwágner F. Miklós március 4. Széchenyi István Egyetem, Gy r

Adatbázis rendszerek Gy: Algoritmusok C-ben

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

Bevezetés a C++ programozási nyelvbe

Láncolt lista. az itt adott nevet csak a struct deklaráción belül használjuk

C_Programozas 2008/6/2 17:13 page 5 #1. Előszó Bevezetés 13

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Programozás C++ -ban 2007/1

A C programozási nyelv VI. Parancssori argumentumok File kezelés

Vezérlési szerkezetek

Programozás I gyakorlat

1. Jelölje meg az összes igaz állítást a következők közül!

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Programozás 1. Dr. Iványi Péter

int tokeletes(int szam) { int i,oszto=0; for(i=1; i<szam; i++) { if(szam %i == 0) { oszto+=i; }

Stack Vezérlés szerkezet Adat 2.

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Programozás I. gyakorlat

Programozás alapjai II. (4. ea) C++

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

Programozás C nyelven 5. ELŐADÁS. Sapientia EMTE

Információs Technológia

Programozás alapjai 1. (BMEVIEEA100)

Megoldott programozási feladatok standard C-ben

Adatszerkezetek és algoritmusok

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Programozás I. gyakorlat

C változók. Feladat: Deklaralj egy valos, egy karakter es ket egesz tipusu valtozot! int main() {

500. CC Megoldó Alfréd CC 500.

Programozás. C++ típusok, operátorok. Fodor Attila

Átírás:

Programozás C nyelven (10a. ELŐADÁS) Sapientia EMTE 2015-16 1

Karakterláncok A karakterláncokat char-tömbökben tároljuk. Egy karakterlánc végét a karakterlánc-végjel jelzi: \0 char s[10] = sapi ;... s s a p i \0????? 0 1 2 3 4 5 6 7 8 9 Az s tömbben tárolt karakterlánc Az s címen kezdődő karakterlánc

Karakterláncok char s[10] = sapi ; //sizeof(s)=10 char a[] = info ; //sizeof(a)=5 char *b = matek ; //sizeof(b)=4 char *c[] = { pascal, c++, java ; //sizeof(c)=12... String-literációk táblázata s a p i \0 i n f o \0 m a t e k \0 s a b c 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 0 1 2 p a s c a l \0 c + + \0 j a v a \0

Karakterláncok beolvasása / kiírása char mondat[100]; scanf( %s, mondat); printf( %s\n, mondat); FILE *fin; fin = fopen( szoveg.txt, r ); if( ){ fscanf(fin, %[^\n]\n, mondat); printf( %s\n, mondat); fscanf(fin, %[^\n]\n, mondat); printf( %s\n, mondat); fclose(fin); szoveg.txt Comenius egyik fo muve: A lathato vilag kepekben Comenius a modern oktatas atyja Comenius Comenius egyik fo muve: A lathato vilag kepekben _ mondat C o m e n i u s \0 mondat 0 1 2 3 4 5 A l a t h a t o 6 7 8 v i l a g k e p e k pb e n \0

string.h (1) size_t strlen(const char *str); //karakterlánc hossz char *strcpy(char *dest, const char *src); //másolás char *strcat(char *dest, const char *src); //egymásutánfűzés int strcmp(const char *str1, const char *str2); //lexikográfikus összehasonlítás char *strchr(const char *str, int c); //c első előfordulásának címe str-ben char *strrchr(const char *str, int c); // c utolsó előfordulásának címe str-ben char *strstr(const char *str1, const char *str2); //str2 első előfordulásának címe str1-ben

#include <string.h> Karakterláncok char s1[20], s2[10]; strcpy(s1, Inform ); strcpy(s2, atika ); printf( %s\n, strcat(s1,s2)); s1 printf( %i,%i\n, strlen(s1), strlen(s2)); printf( %i\n, strstr(s1,s2)-s1); printf( %i\n, strrchr(s2, a )-s2); I n f o r m \0 Informatika 11,5 6 4 _ s2 a t i k a \0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 s1 I n f o r m a t i k a \0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

my_strlen / my_strcmp int my_strlen(char *s){ char *p; for( p = s ; *p ; ++p ){; return p - s; sp p m a t e k \0 int my_strcmp(char *p, char *q){ while( *p == *q ){++p; ++q; return *p - *q; Milyen esetben nem működik helyesen? p p m a t e k \0 q q m a t t \0

string.h (2) char *strncat(char *dest, const char *src, size_t n); //legfentebb n karakter hozzáfűzése int strncmp(const char*str1, const char*str2, size_t n); // legfentebb n karakter összehasonlítása char *strncpy(char *dest, const char *src, size_t n); // legfentebb n karakter másolása size_t strcspn(const char *str1, const char *str2); //str1 str2-mentes prefixének hossza char *strpbrk(const char *str1, const char *str2); // str1 első str2-beli karaktere címe size_t strspn(const char *str1, const char *str2); //str1 str2-beli prefixének hossza char *strtok(char *str, const char *delim); //karakterlánc darabolás

strtok: karakterlánc-darabolás char mondat[80] = "Nem vagyok kulonosebben tehetseges, csak szenvedelyesen kivancsi. (Einstein)"; const char elvalasztok[] =,.()"; char *szo; /* nyerd ki az ELSŐ szót */ szo = strtok(mondat, elvalasztok); /* nyerd ki a TÖBBI szót */ while( szo!= NULL ) { printf( %s\n, szo); szo = strtok(null, elvalasztok); Nem vagyok kulonosebb tehetseg csak szenvedelyesen kivancsi Einstein _ Az első szó kezdőcímét téríti vissza, valamint lezárja ezt \0 -val. Ha a maradékkarakterlánc üres, vagy csak elválasztókaraktereket tartalmaz, akkor NULL pointer-t térít vissza. szo szo mondat \0 N e m v a g y o k \0 k u l o s e b b 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

string.h (3) void *memchr(const void *str, int c, size_t n); int memcmp(const void*str1, const void*str2, size_t n); void *memcpy(void *dest, const void *src, size_t n); void *memmove(void *dest, const void *src, size_t n); void *memset(void *str, int c, size_t n); //Hogyan cseréli ki a qsort a p1 és p2 címeken //található size méretű elemeket? void *pv; pv = malloc(size); strcpy(pv, p1, size); strcpy(p1, p2, size); strcpy(p2, pv, size); pv p1 p2

#include <stdio.h> #include <string.h> int n, i; 0 1 * a d o char **s; FILE *fin; 2 * E z fin = fopen( szoveg.txt, rt ); if(!fin){ fscanf(fin, %i\n, &n); s = (char**)malloc(n * sizeof(char*)); if( ){ for (i = 0 ; i < n ; ++i){ s[i] = (char*)malloc(101 * sizeof(char)); if( ){ fscanf(fin, %[^\n]\n, s[i]); fclose(fin); n darab, maximum 100 karakterű sorok beolvasása állományból kétdimenziós tömbbe s ** * szoveg.txt 0 1... 100 T a n 3 Tanítani szinte nem is jelent mást, mint megmutatni, miben különböznek egymástól a dolgok a különböző céljukat, megjelenési formájukat és eredetüket illetően. Ezért aki jól megkülönbözteti egymástól a dolgokat, az jól is tanít. (Comenius)

Szöveget tartalmazó állomány feldolgozása karakterenként Hány karaktert tartalmaz a szoveg.txt állomány? #include <stdio.h> int i; char c; FILE *fin; fin = fopen( szoveg.txt, rt ); if(!fin){ printf( Sikertelen allomanymegnyitas ); i = 0; while( fscanf(fin, %c, &c)!= EOF ){ ++i; printf( Karakterek szama: %i, i); fclose(fin); szoveg.txt Kiss Elemer Szakkollegium _ Karakterek szama: 26 Sikertelen olvasás esetén az fscanf az EOF konstant téríti vissza

Szöveget tartalmazó állomány feldolgozása szavanként Hány szót tartalmaz a szoveg.txt állomány? #include <stdio.h> int i; char szo[30]; FILE *fin; fin = fopen( szoveg.txt, rt ); if(!fin){ printf( Sikertelen allomanymegnyitas ); for( i = 0 ; fscanf(fin, %s, szo)!= EOF ; ++i ){ ; printf( Szavak szama: %i, i); fclose(fin); szoveg.txt Kiss Elemer Szakkollegium _ Szavak szama: 3

Szöveget tartalmazó állomány feldolgozása soronként Hány sort tartalmaz a szoveg.txt állomány? #include <stdio.h> int i; char sor[100]; FILE *fin; fin = fopen( szoveg.txt, rt ); if(!fin){ printf( Sikertelen allomanymegnyitas ); for( i = 0 ; fscanf(fin, %[^\n]\n, sor)!= EOF ; ++i ){ ; printf( Sorok szama: %i, i); fclose(fin); szoveg.txt Kiss Elemer Szakkollegium _ Sorok szama: 2

Összefoglalás A karakterláncokat char-tömbökben tároljuk. Egy karakterlánc végét a karakterlánc-végjel jelzi: \0 C olvasás szavanként (%s) / soronként (%[^\n]\n) string.h strlen, strcpy, strcat, strchr, strstr, strcmp, strcspn, strpbrk, strspn, strtok, memcpy, memmov, memcmp,