기술적으로 작동 할 수 있다는 것을 보았습니다. 해결할 수없는 유일한 실수는 테스트 할 때마다 마지막으로 인쇄 된 ASCII 문자뿐입니다. 이름을 사용하여 변수를 사용하면 ASCII의 모든 소문자에 32의 빼기를 쓰면 대문자를 하나 줘야한다는 것을 의미하지만, 왜 내가 숯을 추가로 얻는 지에 대해서는 궁금합니다. 화면에서 보았던 것에서 분명히 Û입니다.ctype.h없이 대소 문자 변환
#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();
}
감사는 확실히 솔루션, 그리고 다른 대안으로, 내가는 fgets 것을 기억 : 당신이 실제로 소문자 문자를 변환 할 수 있도록
당신은 chararacter 코드를 확인하실 수 있습니다()는 이름을 입력 한 후에 입력에서 새로운 행을 가져오고, 다음 행을 fgets() 뒤에 추가해야합니다. *** name [strlen (name) -1] = '\ 0'; *** 그래서 변환 할 때 입력 한 새 줄을 삭제할 수 있으며 null로 간주됩니다. – Yudop
이 질문은 오래된 질문입니다. 그러나, 나는 캐릭터가 일부 플랫폼에서 sgned 될 수 있기 때문에 모든 사람들에게'unsigned char '을 사용하도록하고 싶습니다. – ghostmansd