Info2/2008tavasz/kuka
A MathWikiből
(Változatok közti eltérés)
5. sor: | 5. sor: | ||
* karakterlánc = karakterek tömbje, melyet egy 0-kódú karakter zár. Pl. | * karakterlánc = karakterek tömbje, melyet egy 0-kódú karakter zár. Pl. | ||
E z \n e g y \" k a r a k t e r l a n c \" \0 | E z \n e g y \" k a r a k t e r l a n c \" \0 | ||
+ | |||
69 122 10 101 ... 32 34 ... 0 | 69 122 10 101 ... 32 34 ... 0 | ||
− | + | * Egy karakterlánc deklarálása történhet inicializásással is: | |
+ | char str[] = "6 betu"; | ||
+ | vele ekvivalens: | ||
+ | char str[7] = "6 betu"; | ||
Az alábbi programban összefűzünk két karaketrláncot úgy, hogy az első végéről levesszük a '\0' karaktert, majd odamásoljuk a második karakterláncot, amit '\0'-val zárunk. | Az alábbi programban összefűzünk két karaketrláncot úgy, hogy az első végéről levesszük a '\0' karaktert, majd odamásoljuk a második karakterláncot, amit '\0'-val zárunk. | ||
35. sor: | 39. sor: | ||
printf("%d %d %d %d\n",str1[0],str1[1],str1[2],str1[3]); | printf("%d %d %d %d\n",str1[0],str1[1],str1[2],str1[3]); | ||
} | } | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | '''Feladat:''' Olvassuk be valaki nevét és korát, majd írjuk ki a nevét és a korát, de az utóbbiból tagadjunk le 10 évet! | ||
+ | |||
+ | #include <stdio.h> | ||
+ | #include <stdlib.h> | ||
+ | |||
+ | int main(void) | ||
+ | { | ||
+ | char nev[60]; | ||
+ | char kor[4]; | ||
+ | int sz1 = 0, sz2 = 0, k = 0; | ||
+ | |||
+ | scanf("%[^,], %[0123456789]", nev, kor); | ||
+ | while (nev[sz1]) sz1++; // az első karakterlánc hossza | ||
+ | while (kor[sz2]) sz2++; // a második karakterlánc hossza | ||
+ | k=atoi(kor)-10; | ||
+ | |||
+ | printf("Neved: %s, korod: %d\n", nev, k); | ||
+ | |||
return 0; | return 0; | ||
} | } |
A lap 2008. március 6., 22:22-kori változata
4. előadás (2008-03-07)
Karakterláncok (sztringek)
- karakterlánc = karakterek tömbje, melyet egy 0-kódú karakter zár. Pl.
E z \n e g y \" k a r a k t e r l a n c \" \0 69 122 10 101 ... 32 34 ... 0
- Egy karakterlánc deklarálása történhet inicializásással is:
char str[] = "6 betu";
vele ekvivalens:
char str[7] = "6 betu";
Az alábbi programban összefűzünk két karaketrláncot úgy, hogy az első végéről levesszük a '\0' karaktert, majd odamásoljuk a második karakterláncot, amit '\0'-val zárunk.
~/info2/osszefuz.c
#include <stdio.h> int main(void) { char str1[60]="Ez\negy \"karakterlanc\""; // char str1[60]="Ez egy \"karakterlanc\", de nagyon-nagyon hosszu"; char str2[60]=", ez pedig egy masik, amiben van \\."; unsigned sz1 = 0; unsigned sz2 = 0; while (str1[sz1]) sz1++; // az első karakterlánc hossza while (str2[sz2]) sz2++; // a második karakterlánc hossza if(sizeof str1 < sz1 + sz2 + 1) printf("\nAz osszefuzes nem fog menni.\n"); else { sz2 = 0; while(str2[sz2]) str1[sz1++] = str2[sz2++]; str1[sz1] = '\0'; // 0-val zárjuk a karakterláncot printf("\n%s\n", str1); printf("%d %d %d %d\n",str1[0],str1[1],str1[2],str1[3]); } return 0; }
Feladat: Olvassuk be valaki nevét és korát, majd írjuk ki a nevét és a korát, de az utóbbiból tagadjunk le 10 évet!
#include <stdio.h> #include <stdlib.h> int main(void) { char nev[60]; char kor[4]; int sz1 = 0, sz2 = 0, k = 0; scanf("%[^,], %[0123456789]", nev, kor); while (nev[sz1]) sz1++; // az első karakterlánc hossza while (kor[sz2]) sz2++; // a második karakterlánc hossza k=atoi(kor)-10; printf("Neved: %s, korod: %d\n", nev, k); return 0; }