내 코드에 따라 각 그리스 문자가 2 바이트로 저장된다고 가정합니다. sizeof
반환 4 각 문자의 크기 (즉 sizeof의 int
)sizeof 문자 및 strlen 문자열 불일치
어떻게 strlen
반환 16합니까? [각 문자가 2 바이트를 차지한다고 생각하게해라] (4 * 8 = 32는 바이트 수를 계산해야하기 때문에)
각 문자를 올바르게 인쇄하는 방법은 무엇입니까? %c
때문에 1 바이트 (문자)를 읽지 않아야하는데, 왜이 경우 그리스 문자가 분할되지 않습니다.
strcpy(bigString,"ειδικούς");//greek
sLen = strlen(bigString);
printf("Size is %d\n ",sizeof('ε')); //printing for each character similarly
printf("%s is of length %d\n",bigString,sLen);
int k1 = 0 ,k2 = sLen - 2;
for(i=0;i<sLen;i++)
printf("%c",bigString[i]);
출력 : C에서
가Size is 4
ειδικούς is of length 16
ειδικούς
왜 'strlen'이 '16'을 제공합니까? 4 * 8 = 32를주는'int' 타입의 8 문자가 있어야합니까? –
아니요. 문자 리터럴은 'int'입니다. 문자열의 문자는 필요한 크기 여야합니다 - 귀하의 경우에는 각각 2 바이트처럼 보입니다. –
btw, visualof 스튜디오에서 sizeof ('ε') 인쇄 ... 그리고 어느 쪽이든이 'ε'은 문자열 리터럴이 아니라 char 리터럴입니다. –