El problema tiene que ver con las codificaciones ASCII, que windows usa ISO 8859-1 y MS-DOS utiliza la pagina de codigos 437 u 850, entonces, si tu editas tu archivo en windows, el codigo ASCII en windows no coincide con el codigo en MS-DOS y viceversa.
Podrias probar comparandolo como si fuera un numero, en lugar de con una letra. El siguiente codigo funciono bien en mi windows, utilizando Code::Blocks/Mingw, tal vez funcione en el tuyo. Por cierto, no utilices la libreria conio de borland, no es portable.
#include<stdio.h>
void minmay(char vector[]);
int main()
{
char cadena[100];
printf("Introduce una cadena:");
gets(cadena);
minmay(cadena); /* Llama a la funcion */
printf ("En Mayusculas: %s\n", cadena);
getchar();
return 0;
}
void minmay(char vector[])
{
int i;
int desp='a'-'A';
for (i=0;vector[i]!='\0';++i)
{
if (vector[i] == -92)
{
vector[i] = -91;
}
if (vector[i]>='a'&&vector[i]<='z')
{
vector[i]=vector[i]-desp;
}
}
}
Si necesitas sabes que numero coincide con que letra, podrias utilizar este pequeño ciclo.
char j;
for (j = -128; j <= 127; j++)
{
printf("%c = %d\n", j, j);
if (j == 127)
break;
}
Saludos 8)