Ugrás a főoldalra!

Felhasználónév:

Jelszó:

 :: ".$_ASWC_['NAME']." ".$_ASWC_['VERSION']." ".$_ASWC_['STATUS'];?> - [Látogatók: ]  
Freelance Jobs

Témaköreink

 


On-line

Dev, Admin: 0
Lektorok, írók: 1
  ÷Magus|BOT
Felhasználók: 0
Vendégek: 1
Tegnap: 0
E havi:
 

Statisztika

Oktatóanyagok száma
 Publikus: 128

Legolvasottabb írónk
 outesticide 362780

Legszorgalmasabb írók
1. balymo 24
2. outesticide 20
3. tipli 19
4. adrob 18
5. akciolap 15

Legolvasottabb címek
1. CSS
Egyszerü vízszintes menü és vízszintes menü legördülő almenükkel [55296]
2. CSS
Bevezetés a CSS alapjaiba [30793]
3. CSS
A pozícionálás, és a z-index [30277]
4. CSS
A felhasználói felület - első rész [24621]
5. CSS
Függőleges menü, legördülő almenüvel [24490]
 

 

C,C++ -> Karaktertömbök

Író: balymo ( naniika@gmail.com )
  http://
Készült: 2004-05-28 07:19:07
Lektorálta: adrob
Lektorálva:
2004-07-04 01:08:10 [6433]

Karaktertömbök



A C nyelvben valószínűleg a leggyakrabban használt tömbtípus a karaktertömb. Ennek bemutatására, hogy hogyan használjuk a karaktertömböket, lássunk egy programot, ami szövegsorokat olvas be és kiírja közölük a leghosszabbat.

A program váza egyszerű:

while (van további sor)
    if  (a sor hosszabb az eddigi legghosszabbnál)
         tárold a sort 
         tárold a sor hosszát
nyomtassd ki a leghosszabb sort


A programváz alapján látszik, hogy a program több, jól elkülönülő részre osztható az első beolvassa, és megvizsgálja, a második pedig eltárolja az új sort, a fennmaradó rész pedig a folyamatot vezérli.
Mivel az egyes részek ilyen jól elkülönülnek, ha a programot is ennek megfelelően írjuk meg. Ezért először írjunk egy különálló getline függvényt, aminek feladata, hogy előkészítse a
következő sort. A minimális igény, hogy a getline visszatérésekor jelezze, ha elértük az állomány végét.
Végül szükségünk van egy main-re a getline és a copy vezérléséhez.

# include <stdio.h>
# define MAXSOR 1000 /*a beolvasott sor max. mérete */

int getline(char sor[ ], int maxsor);
void copy(char ba[ ], char bol[ ]);

/*a leghosszabb sor kiíratása */
main()
{
      int hossz; /*az aktuális sor hossza*/
      int max; /*az eddigi maximális hossz*/
      char sor[MAXSOR]; /*az aktuális sor*/
      char leghosszabb[MAXSOR]; /*ide teszi a leghosszabb sort*/

      max = 0;
      while ((hossz = getline(sor, MAXSOR)) > 0)
            if (hossz > max) {
            max = hossz;
            copy(leghosszabb, sor);
}
     if (max > 0) /*volt sor, nem EOF*/
         printf("%s", leghosszabb);
           return 0;
}
/*getline: egy sort beolvas az s-be */
/*és visszaadja a hosszát */
int getline(char s[ ], int lim )
{
          int c, i;

          for (i = 0; i < lim-1 && (c = getchar()) != EOF
                  && c! = 'n'; ++i)
              s[i] = c;
          if (c == 'n') {
              s[i] = c;
                ++i;
}
              s[i] = '';
              return i;
}
/* copy: a "ba" helyre másol a "bol" helyről */
void copy(char ba[ ], char bol[  ])
{
       int i;

       i = 0;
      while((ba[i] = bol[i]) != '')
          ++i;
}


A getline és copy függvényeket a program elején deklaráljuk és a programról feltételezzük, hogy egyetlen állományban van.
A main és a getline egy argumentumpáron keresztül tartja a kapcsolatot és a getline egy értékkel tér vissza. A getline argumentumait az

int getline(char s[ ], int lim)

sorban deklaráltuk, ami azt mondja, hogy az első argumentum (s) egy tömb, a második(lim) pedig egy egész változó. A deklarációban a tömb méretének megadásától eltekinthetünk.
A getline a '
* Minden további kérdéseddel fordulj az anyag írójához.

 

Hello Vendég

Az oktatóanyagok olvasásához be kell jelentkezned.

Szeretnék regisztrálni.

Elfelejtettem a jelszavam!
Kiküldöm magamnak!