코드 :변수 len이 정의 된 방법에 따라 출력이 다른 이유는 무엇입니까?
이#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
int len = 3; // length of word
char * word = "cat"; // word to be sorted
char sortedWord[len];
int i, j, temp;
// store chars from 'word' to an array 'sortedWord[]'
for (i = 0; i < len; i++) {
sortedWord[i] = *word;
word++;
}
// sort the array using bubble sort
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (sortedWord[j] > sortedWord[j + 1]) {
temp = sortedWord[j];
sortedWord[j] = sortedWord[j + 1];
sortedWord[j + 1] = temp;
}
}
}
printf("%s\n", sortedWord);
}
이 질문의 초점은 변수 '렌'입니다. len이 3과 같다고 정의한다면 출력은 예상대로입니다 (즉, "act"). 그러나 명시 적으로 정의하지 않고 길이를 찾을 수 있기를 원합니다.
int len = strlen (word);
그러나, 출력이 예상과 :
나는대로 렌 정의하기 위해 노력했다. 그것은 actW?, actX?와 같은 결과를 나에게 줄 것입니다. 나는 인쇄 할 수 있다면
int len;
for (len = 0; *word != '\0'; len++) {
word++;
}
놀랍게도, 그것을 정의 직후 명시 적으로 렌 변수, 그것은 또한 같은 방식으로 작동 것이다 : 나는대로 렌을 정의 할 때
는이 같은 문제가 발생합니다.
int len = 3;
printf("Length: %d\n", len); // will cause the output to be different
나는 근본적인 개념이 빠져 있다고 확신하지만,이 문제를 해결하기위한 접근법에는 확신이 없습니다. 미리 감사드립니다!
'의 printf ("% s의 \ 없음"이기 때문에 문자열 리터럴에 대한 포인터를 작성할 때, – BLUEPIXY
@BLUEPIXY 대개 한 줄 힌트는 매우 유용하지만, 매우 불분명 함을 인정해야합니다 (예 : sortedWord); -> printf ("%. * s \ n", len, sortedWord); –
이것은 널 문자 종료가 필요 없음을 의미합니다. BLUEPIXY는 내가 당신과 동의해야 할 때마다 그 자리를 때린다. :) –