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