これが技術的に機能することがわかりました。解決できなかった唯一の間違いは、テストするたびに出力される最後のASCII文字でした。また、name変数を使用せずにこれをテストしました。つまり、32の減算を行うだけですASCII の小文字に変換すると、大文字の文字が返されるはずですが、追加の文字が表示される理由に興味があります。画面に表示されているものは明らかにÛです。
#include <stdio.h>
main()
{
char name[22];
int i;
fputs("Type your name ",stdout);
fgets(name,22,stdin);
for (i = 0; name[i] != '\0'; i = i + 1)
printf("%c",(name[i])-32); /*This will convert lower case to upper */
/* using as reference the ASCII table*/
fflush(stdin);
getchar();
}