Pobrisi samoglasnike v C-ju

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje
##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:

  1. najprej vse črke pretvorila v lowercase in jih nato primerjala in kopirala
  2. 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);
}
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja