2

これが技術的に機能することがわかりました。解決できなかった唯一の間違いは、テストするたびに出力される最後の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();
} 
4

3 に答える 3

4

文字列の末尾に改行文字がある可能性があります。

実際に小文字である文字のみを変換するように、文字コードを確認できます。

for (i = 0; name[i] != '\0'; i = i + 1) {
  char c = name[i];
  if (c => 97 && c <= 122) {
    c -= 32;
  }
  printf("%c", c);
}
于 2012-11-13T23:48:01.700 に答える