CodeGuru 에서 "strlen vs sizeof" 라는 제목의 스레드를 읽었 으며 그 중 하나는 "어쨌든 char
문자열 리터럴이 있는 배열 을 초기화하는 것은 좋지 않습니다" 라고 말합니다 .
이것이 사실입니까, 아니면 단지 그의 ( "엘리트 회원") 의견입니까?
원래 질문은 다음과 같습니다.
#include <stdio.h>
#include<string.h>
main()
{
char string[] = "october";
strcpy(string, "september");
printf("the size of %s is %d and the length is %d\n\n", string, sizeof(string), strlen(string));
return 0;
}
권리. 크기는 길이에 1을 더한 값이어야합니까?
이것은 출력입니다
the size of september is 8 and the length is 9
크기는 반드시 10이어야합니다. strcpy에 의해 변경되기 전에 문자열의 크기를 계산하는 것과 비슷하지만 길이는 같습니다.
내 구문에 문제가 있습니까?
답장 은 다음과 같습니다 .
어쨌든 문자열 리터럴로 char 배열을 초기화하는 것은 나쁜 습관입니다. 따라서 항상 다음 중 하나를 수행하십시오.
const char string1[] = "october";
char string2[20]; strcpy(string2, "september");