Ciao a tutti, questo è il mio primo post su questo forum
Sto realizzando un programma C che utilizzi una funzione per invertire una stringa inserita da tastiera e ne restituisca dimensione e numero di caratteri maiuscoli. Funziona tutto, eccetto il numero di maiuscole.
La mia funzione prende come parametri la stringa e il puntatore alla variabile num_M (numero di maiuscole), mentre ritorna la dimensione della stringa.
A quanto pare l'incremento di *num_M non funziona, infatti num_M vale 0 alla fine del main. Qualche idea? :master:
codice:#include <stdio.h> #include <stdlib.h> #include <ctype.h> #define MAX 64 int strinv (char s[], int *num_M); int main() { char str[MAX]; int dim, num_M; printf("str: "); scanf("%s", str); dim = strinv(str, &num_M); printf("\ndim = %d\nnum maiusc = %d\nstrinv: %s\n", dim, num_M, &str); return 0; } int strinv (char s[], int *num_M) { int i, dim = 0; *num_M = 0; for (i=0; s[i]!='\0'; i++) // qui è il problema if (isupper(s[i])) *num_M++; dim = i; int tmp; for (i=0; i<dim/2; i++) { tmp = s[i]; s[i] = s[dim-i-1]; s[dim-i-1] = tmp; } return dim; }

Rispondi quotando