|
I. Egy
szövegállományban nevek
vannak. Hozzunk létre egy kétdimenziós
karakter-tömböt, amelynek dinamikusan foglaljunk helyet
és
végezzük el a következőket:
- írjuk át egy másik
kétdimenziós tömbbe az 'a' betűvel kezdődő neveket,
- rendezzük az újonnan létrehozott
tömböt, majd írjuk ki a rendezett tömböt egy
szövegállományba,
- olvassunk be egy nevet a billentyűzetről és
vizsgáljuk meg, hogy szerepel-e a kétdimenziós
tömb nevei között, a keresés során ne
tegyünk különbséget a kis és nagybetűk
között ( Forráskód )
II. Egy szövegállomány tartalmát
nagybetűsítsük, soronként kiolvasva egy dinamikusan
létrehozott tömbbe az állomány
tartalmát.
III. Készítsünk
karakter előfordulási statisztikát
egy
szöveges-állományon.
IV. Írjuk meg a követkő függvényeket:
- Visszateríti a paraméterként
megadott karakterlánc hosszát:
- A második paraméterként megadott
source
karakterláncot másoljuk át az első
paraméterként
megadott dest karakterláncba,
visszatérítve a dest karakterláncot:
- char*
my_strcpy(char* dest, char* source) ( Forráskód
)
- A második paraméterként megadott
source
karakterláncot fűzzük hozzá az első
paraméterként megadott dest karakterlánchoz,
visszatérítve a dest karakterláncot:
- char* my_strcat(char*
dest, char* source) ( Forráskód
)
- A paraméterként megadott két
karakterláncot
hasonlítsuk össze lexikografikus sorrend alapján. Ha
egyenlők, akkor 0-t,
ha az első a nagyobb, akkor 1-t, ha a második a nagyobb, akkor
–1-t terítsen vissza a függvény:
- int
my_strcmp(char * s1, char * s2)
- Vizsgáljuk meg, hogy a
paraméterként
megadott c
karakter előfordul-e a paraméterként feltüntetett s1
karakterláncban. Ha benne van, akkor egy mutató legyen a
visszatérítési érték mely az első
előfordulási pozíciót határozza meg, ha
nincs
benne, akkor NULL értéket térítsen vissza:
- char* my_strchr(char *s, int c)
- Vizsgáljuk meg, hogy a
paraméterként
megadott s2
karakterlánc előfordul-e a paraméterként
feltüntetett s1
karakterláncban. Ha benne van, akkor egy mutató legyen a
visszatérítési érték, amely az első
előfordulási pozíciót határozza meg. Ha az s2
értéke üres karakterlánc, akkor a
visszatérítési érték az s1
karakterlánc legyen, ha nincs benne, akkor NULL
értéket
térítsen vissza:
- char* my_strstr(char*
s1, char* s2)
- Határozzuk meg a paraméterként
megadott
karakterlánc fodított alakját.
- char*
my_strback(char *s)
V. Olvassuk be soronként egy szöveg állomány
tartalmát ( Forráskód ). A
szövegállomány névét a parancssor első
argumentumaként adjuk meg. Az 1. pontnál megírt
függvények alkalmazásával
készítsük el a következő programokat.
Kezeljük az előforduló hibákat.
- írassuk ki a képernyőre azokat a
sorokat, amelyekben
megtalálható a parancssor második
argumentumaként
megadott karakterlánc,
- a beolvasott szöveg sorait írassuk ki
fordított sorrendbe,
- a beolvasott szöveg azon sorait írassuk
ki, amelyek
hossza adott értéknél nagyobb,
- töröljük a beolvasott szövegből a
space
és enter
karaktereket.
VI. Írjunk programot, amely kiértékeli a
parancssor
argumentumában megadott aritmetikai műveletet két
operandus között. Az operátorokat ( + - * / )
és
az operandusokat szóköz választja el.
Forráskódok:
I.
#include
<stdio.h>
#include <stdlib.h>
#include <string.h>
void nagybetusit(char
* my_str);
int main(){
FILE *F, *G;
int i, n;
char *nev, **sor;
F = fopen ("labor3.c", "r");
G = fopen ("ki.txt", "w");
fscanf (F, "%i\n", &n);
fprintf (G, "%i\n", n);
nev = (char*) malloc (80*sizeof (char) );
sor = (char**) malloc (n*sizeof (char*) );
for( i = 0; i < n; ++i)
sor[i] = (char*) malloc
(80*sizeof(char) );
for(i=0; i<n; ++i){
fgets (sor[i], 80, F);
fputs (sor[i], G);
}
fclose (G);
fclose (F);
printf ("nev:");
fgets (nev, 80, stdin);
nagybetusit (nev);
for( i = 0; i < n; ++i){
nagybetusit (sor[i]);
if (strcmp (nev, sor[i]) ==
0) printf ("%i %s\n", i, sor[i]);
}
for ( i = 0; i < n; ++i)
free (sor[i]);
free (sor);
free (nev);
}
void nagybetusit(char
* my_str){
int i;
for ( i = 0; i < my_str[i] != '\0'; ++i){
if ( my_str[i] <= 'z'
&& my_str[i] >= 'a') my_str[i] -=32;
}
}
Vissza
IV.1,3
#include
<stdio.h>
#include <stdlib.h>
char *my_strcat
(char *dest, char*source);
int my_strlen (char
*s);
int main()
{
char s1[40], s2[40];
int h1, h2;
printf ( "Kerek egy karakterlancot: ");
scanf ( "%s", s1);
printf ( "Kerek egy karakterlancot: ");
scanf ( "%s", s2);
printf ( "\n");
h1 = my_strlen
(s1);
h2 = my_strlen
(s2);
printf("Az elso karakterlanc hossza: %i\n", h1);
printf("A masodik karakterlanc hossza: %i\n", h2);
printf("\n");
my_strcat
(s1, s2);
printf("Osszefuzott string: %s\n", s1);
printf("Regi string: %s\n", s2);
return 0;
}
int my_strlen (char *s)
{
int i;
for (i = 0; *(s+i)!=0; i++);
return i;
}
char *my_strcat(char
*dest, char*source)
{
for( ; *dest != 0; dest++);
for( ; *source != 0; dest++,source++)
*dest=*source;
*dest = 0;
return dest;
}
Vissza
IV. 2
char*
my_strcpy(char* dest, char* source)
{
int i;
for(i=0 ; *(source+i) !='\0'; i++)
*(dest+i) = *(source+i);
*(dest+i) = '\0';
return dest;
}
//
az alabbi
valtozatban a dest memoriacim valtozik, nem terithetem vissza az erteket
int
my_strcpy1(char* dest, char* source)
{
for( ; *source!='\0'; dest++, source++)
*dest = *source;
*dest='\0';
return 0;
}
Meghivasi
módok:
int main()
{
char *string;
string = (char*) malloc(20 * sizeof(char));//fontos!!!!
string = my_strcpy( string, "Helo vilag" );
printf( "String = %s\n", string );
free (string);
return 0;
}
// az alabbi
valtozatban a 4. sorban hibas az ertekadas
int main()
{
char string[80];
string = my_strcpy( string, "Helo vilag" );
printf( "String = %s\n", string );
return 0;
}
// ez ujbol helyes
int main()
{
char string[80];
my_strcpy( string, "Helo vilag" );
printf( "String = %s\n", string );
return 0;
}
// a masodik
valtozat, a strcpy1 hivodik meg
int main()
{
char s1[80];
my_strcpy1(s1,"helo vilag");
printf( "String = %s\n", s1 );
return 0;
}
Vissza
V.
#include
<stdio.h>
int
main(int
argc, char * argv[])
{
FILE *f;
char sor[100];
if (argc!=3)
{
printf("Hibas argumentum lista\n");
return 0;
}
if( (f=fopen(argv[1],"r")) == NULL )
{
printf("Megnyitasi hiba\n");
return 0;
}
while( (fgets(sor,100,f)) != NULL )
//printf("%s",sor);
fclose(f);
return 0;
}
Vissza
|