Ese if se cumple cuando el primer caracter de la cadena version (*version) es 0 (!), de otra manera el not (!) no se cumple, es decir cuando la cadena esta vacia.
Tampoco podes concatenar asi como asi en cualquier lado ... y esta concatenacion en particular (si le dieras un valor correcto al segundo parametro de strcat_s que es el numero de caracteres de la cadena de DESTINO) justamente borraria el numero que mas te interesa (el decrementado) ya que la cadena queda asi en memoria antes de eso si por ejemplo pasaste "1.8":
'1' 0 '7'
Donde 1 y 7 son caracteres y 0 un byte, al concatenar el '.' pone el find e cadena en lugar del 7 y lo perdes ...
La verdad es que no entiendo para que tanta complicacion, con esto tendrias el 90% hecho (faltarian un par de comprobaciones nada mas):
Código:
version[strlen(version) - 1]--;
return version;
Para mostrar el codigo ponelo entre etiquetas code (ejemplo, cambiar por CODE): [ETIQUETA]codigo aca[/ETIQUETA].