19.03.vežbe: Korišćenje funkcija za rad sa znakovima i stringovima
Primer 1: Pretvaranje svih vrsta slova u tekstu u velika slova (jedno od rešenja)
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
int i, duzina;
char str1[80],str2[80];
puts("unesi neki tekst: ");
gets(str1);
duzina = strlen(str1);
for(i=0; i<duzina; i++)
str2[i] = toupper(str1[i]);
str2[i]='\0';
printf("poceli smo sa str=%s, a dobili smo str2=%s",str1,str2);
return 0;
}
Drugi način na koji bi de mogao rešiti isti zadatak:
#include <ctype.h>
#include <stdio.h>
char *u_velika(char *ptxt) {
char *p = ptxt;
while(*p)
{ *p = toupper(*p);
p++; }
return ptxt;
}
int main(void) {
char tekst[100];
gets(tekst);
puts(u_velika(tekst));
return 0;
}
Niska znakova, kao parametar funkcije, u ovom slučaju je deklarisana kao pokazivač na znakove (char *). Uslov u naredbi while ispituje da li je kod znaka na koji pokazuje pokazivač p različit od nule (!=0, što je istovetno sa != '\0', što se podrazumeva). Sve dok je taj uslov ispunjen, pokazivani znak se bibliotečkom funkcijom toupper pretvara u veliko slovo. Posle toga se pokazivač p poveća za jedan, čime se prelazi na sledeći znak teksta. Kao vrednost funkcije vraća se pokazivač na obrađeni tekst.
Pošto funkcija u_velika vraća, kao rezultat, pokazivač na obrađeni tekst, poziv te funkcije mogao je da se piše kao argument funkcije puts, radi ispisivanja rezultata. Naravno, kao bočni efekat funkcije u_velika, obrađivani tekst se trajno nalazi u nizu tekst, pa bi, po potrebi, mogao da se koristi u nastavku programa.
Primer 2: Iz unetog teksta izbaciti sve praznine (space).
Primer 3. Iz unetog teksta izbaciti sve tačke
Primer 4: Nacrtati algoritam i napisati program u programskom jeziku C za određivanje broja velikih slova, malih slova i broja ostalih znakova iz teksta koji je korisnih uneo.