Pobrisi samoglasnike v C-ju
Iz E-študij, proste zakladnice študentskega znanja
##include <stdio.h> brezSamoglaske(char s[]) { int i, j; i=0;j=0; while(s[i]!='\0') { if((s[i]!='a')&&(s[i]!='e')&&(s[i]!='i')&&(s[i]!='o')&&(s[i]!='u')&& (s[i]!='A')&&(s[i]!='E')&&(s[i]!='I')&&(s[i]!='O')&&(s[i]!='U')) { s[j]=s[i]; j++; } i++; } s[j]='\0'; } int main() { char a[]="PrOGramIraNJE 2"; printf("%s\n",a); brezSamoglaske(a); printf("%s\n",a); }
Še en primer iste funkcije, ki pa pri prevajanju vrne opozorilo "25: warning: function returns address of local variable". Če slučajno kdo ve, kaj je narobe in kako se da stvar rešiti drugače naj prosim napiše. Je pa še ena pomanjkljivost, in sicer funkcija iz niza odstrani samo lowercase samoglasnike, kar bi lahko rešila na 2 načina:
- najprej vse črke pretvorila v lowercase in jih nato primerjala in kopirala
- dodala bi še nekaj logičnih stavkov v if stavek (za velike črke), kjer preverjam če je črka slučajno samoglasnik
Uglavnem... zgornji primer je ful boljši, ker jst preveč kompliciram.
#include <stdio.h> char* pobrisiSamoglasnike(char niz[]) { char temp[strlen(niz)]; int i, j=0; for(i=0; i<strlen(niz); i++) { if(niz[i]!='a' && niz[i]!='e' && niz[i]!='i' && niz[i]!='o' && niz[i]!='u') temp[j++]=niz[i]; //prekopiramo vse znake ki niso samoglasniki } temp[j]='\0'; //dodamo oznako, da smo niz zaključili j=0, i=0; while(temp[j++]!='\0') i++; //prestejemo koliko znakov ima zacasni niz char nizBrez[i]; //naredimo nov niz j=0; while(j<=i) nizBrez[j]=temp[j++]; /* v nov niz prekopiramo vse znake do zakljucka niza */ return nizBrez; } main() { char stavek[] = "Tralala"; char *novStavek=pobrisiSoglasnike(stavek); printf("%s",novStavek); }