내 주요 언어는 포르투갈어이므로 일부 문자는 변수로 읽고 읽으려고하는데 악센트가있는 단어가 있습니다 (예 : á é ó ú ... 등) 일하지 마라. 만약 내가 코드에서 작동하도록 설정했다면,하지만 사용자에게 입력을 요청하면 그렇지 않습니다. 실시 예 번호 :C 변수에 악센트 부호가있는 문자 저장
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(int argc, char *argv[]) {
setlocale(LC_ALL, "Portuguese");
char test, test2; //The same still happens using unsigned char
test = 'í';
printf("Character: %c\n", test);
scanf(" %c", &test2); //The same still happens using fgets in case of a string
printf("Character: %c\n", test2);
system("pause");
return 0;
}
컴파일 된 코드를 실행 보여준다
캐릭터 : ¡
경우 :
I (문자 I, 입력 예 : 기다려 입력은 ''(공간) ','인쇄 ','인쇄 ','인쇄 '가 있습니다.
저는 프로그래밍 및 stackoverflow를 처음 사용했습니다. 실수를해서 유감스럽게 생각합니다. 모든 도움을 주시면 감사하겠습니다. 감사합니다.
아, 또한 Dev-C++을 사용하여 컴파일하면 차이가 있습니다.
은, 문자 배열은 개별 바이트 (문자)로 만들어진다 관련 라이브러리 루틴. UTF-8 문자는 여러 바이트 (문자)입니다. – id0
C 언어에서 'char'데이터 유형은 1 바이트를 보유합니다. 이름은 오해의 소지가 있습니다. 문자가 ASCII 세트에 속하는 경우 또는 레거시 8 비트 인코딩을 사용하여 문자가 인코딩 된 경우와 같이 잘 제어 된 상황을 제외하고는 대부분의 사람들이 문자라고 부르는 것을 보유 할 수 없습니다. 데이터 타입이'byte' 대신에'char'라는 이름을 갖는 것은 C가 ASCII 세트 외부의 문자들을 필요로하지 않는 영어 또는 줄 루어의 화자들에 의해 발명되었다는 것을 보여줍니다. – AlexP
콘솔에서 utf-8을 지원하면 char (및 utf-8) 배열을 사용하여 문제를 해결할 수 있습니다. 그렇다면 귀하의 언어는 러시아어 또는 중국어 일 수도 있습니다. "% c"형식은 "% s"이되어야합니다. – user308879