41.6번 코딩, 무엇이 문제인가요?
, 김 성님이 작성41.6강에서 저는 이렇게 코딩을 하고 설마 몰라서 비주얼 스튜디오로 실행을 했는데 왜 입력을 잘되는데 숫자 출력이 안되네요.
(증상, 갑자기 다른창이 뜨더니 그대로 종료되네요)
무엇이 문제 인건가요?
#define _CRT_SECURE_NO_WANRINGS
#include <stdio.h>
#include <string.h>
int main()
{
char *s1 = "NULL";
scanf("%s", s1);
printf("%d\n", strlen(s1));
return 0;
}
회신: 41.6번 코딩, 무엇이 문제인가요?
, 도장_ 관리자님이 작성코드에서 NULL은 미리 정의된 값이고, "NULL"은 NULL이라는 알파벳이 들어간 문자열입니다.
char *s1 = "Hello"; // 읽기 전용 문자열
s1 = "ERROR"; // 읽기 전용이므로 에러 발생
읽기 전용이므로 입력 받은 값으로 바꾸는 것도 할 수 없습니다.
char *s1 = "Hello"; // 읽기 전용 문자열
scanf("%s", s1); // 읽기 전용이므로 에러 발생
읽기 전용 문자열에 대해서는 Unit 39.2의 예제 string_pointer_element_assign_error.c를 확인하세요. 문의한 코드와 정확하게 같은 유형입니다.
읽기 전용 문자열에 값을 할당하는 실수는 자주 발생합니다. 이에 대해서는 Unit 39.1, 39.2, 40.2와 Unit 40 다음의 핵심정리에서 한 번씩 설명되어 있습니다. Unit 41.6까지 차례대로 학습하면서 한 번씩은 봤을 겁니다.
자주하는 실수이므로 이에 대해서는 이어서 Unit 42.1, 42.2에서도 설명합니다.