[C] Riconoscere vocali e stamparle in un array
Scrivere un programma che ricevuta in ingresso stringa1 memorizzi e in stringa2 tutte le vocali contenute nella
stringa iniziale.
La mia soluzione proposta è la seguente:
char voc[2];
char s[4]="ciao"
int p=0;
for(i=0; i<4; i++){
if ( (s=='a') || (s=='e') || (s=='i') || (s=='o') || (s=='u') ){
voc
=s;
p++;
}
}
qualcuno mi può dare una mano?
Grazie per l'aiuto
Una possibile soluzione è questa:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 100 char * estrai_vocali(char *stringa) { int i=0; char *vocali = malloc(MAX_SIZE * sizeof(char)); int riempito = 0; for(i=0; i<strlen(stringa); ++i) { if((stringa[i] == 'a') || (stringa[i] == 'e') || (stringa[i] == 'i') || (stringa[i] == 'o') || (stringa[i] == 'u')) vocali[riempito++] = stringa[i]; } /* inserisco il terminatore della stringa */ vocali[riempito] = '\0'; return vocali; } int main() { char stringa[MAX_SIZE]; printf("Inserire una stringa: "); scanf("%s", stringa); printf("Le vocali sono: %s\n", estrai_vocali(stringa)); return 0; }

Scrivere una funzione che ricevuta in ingresso una stringa, crea e restituisce al chiamante una stringa contenente tutte e sole vocali minuscole presenti nella stringa iniziale. La dimensione della stringa risultante deve essere tale da contenere tutte e sole le vocali minuscole.
Ho cambiato il testo per essere più sintetico(non riuscivo a copiare gli elementi nel nuovo vettore).
Dimenticavo il carattere di terminazione ' \0 ' nell'ultimo vettore.
Vi incollo la soluzione, adesso funziona tutto:
#include
#include
#include
#define size 30
int main(int argc, char *argv[])
{
char s[size];
int i;
int b_size=0;
int p=0;
printf("inserisci una stringa: \n");
scanf("%s", s);
//blocco per contare le vocali
for(i=0; i
b_size++;
}
}
printf("la stringa ha %d vocali \n", b_size);
//creo il nuovo vettore e copio le vocali in esso
char b[b_size];
for(i=0; i
b
=s;
p++;
}
}
b[b_size]='\0';
printf("la stringa di vocali e': %s \n", b);
system("PAUSE");
return 0;
}