il progr.(fatto in c) qui sotto dovrebbe, dato l'inserimento di una stringa di caratteri memorizzati in un vettore, stampare la stringa e sotto scriverne un'altra sostituendo alle vocali 'v' e alle consonanti 'c' e a quello che non trova 'x'
il problema è che quando vado a stampare la stringa non vedo i caratteri che ho immesso, ma caratteri strani e quando sostituisce inserisce tutte x.
non riesco a capire dov'è l'errore. ho evidenziato con ***** la parte di acquisizione della stringa
grazie a tutti
#include <stdio.h>
#define N 10
void modifica_array(char arr[]);
void stampa_array(char arr[]);
int main()
{ int i;
char frase[N];
/* printf("Inserisci la lunghezza della frase:");
scanf("%d",&N);
if (N>0)
{ */
printf("Inserisci una frase di %d caratteri:",N);
for (i=0; i<=N; i++)
************************************************** ***********
scanf("[^\n]",frase);
************************************************** ***********
/*printf("%c",frase[0]); */
stampa_array(frase);
modifica_array(frase);
/* }
else
printf("errore");
*/
getch();
return;
}
void stampa_array(char arr[])
{ char c;
int j=0;
while(c=arr[j]!='\0'){
printf("%c",arr[j]);
/* printf(" "); */
++j;
}
printf("\n");
return;
}
void modifica_array(char arr[])
{
int k=0;
char c;
while(c=arr[k]!='\0'){
if (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U' || c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')
arr[k]='v';
else if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
arr[k]='c';
else
arr[k]='x';
printf("%c",arr[k]);
/* printf(" "); */
++k;
}
printf("\n");
return;
}