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;
}