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;
}
Személyes eszközök