쪽지시험 - ccyomni/ex250310_second GitHub Wiki
'''c
#pragma warning(disable:4996) // gets() 같은 보안에 취약한 함수 사용 시 발생하는 경고 4996번을 끔 #include <stdio.h> // for printf, gets_s #include <stdlib.h> // for malloc, free #include <string.h> // for strcmp, strcpy, strlen
int main() // 프로그램의 시작점인 main 함수 { char* sarr[1000] = { 0 }; // 최대 1000개의 문자열을 저장할 수 있는 포인터 배열 선언 int count = 0; // 몇 개의 문자열을 저장했는지 추적하기 위한 변수
while (1) // 무한 반복문 시작, 중간에 break 문으로 종료 가능
{
char buf[1000]; // 사용자로부터 입력받을 문자열을 임시로 저장할 배열, 최대 999자 + null 문자
printf("문자열 입력: "); // 사용자에게 문자열 입력을 요청하는 메시지 출력
gets_s(buf, 1000); // buf에 최대 999자까지 문자열을 안전하게 입력받음
if (strcmp("exit", buf) == 0)
break; // 입력된 문자열이 "exit"이면 반복문 종료
printf("string : %s\n", buf); // 입력된 문자열을 출력
char* s = (char*)malloc(strlen(buf) + 1); // buf의 길이만큼 메모리를 동적 할당, +1은 null 문자 '\0'을 위한 공간
strcpy(s, buf); // buf에 있는 문자열을 할당받은 메모리 공간 s에 복사
sarr[count++] = s; //복사된 문자열의 주소를 배열에 저장하고, count를 1 증가시킴
}
for (int i = 0; i < count; ++i) // 저장된 문자열들을 모두 출력하기 위한 반복문 시작
printf("[%d] : %s\n", i, sarr[i]); // 저장된 문자열을 [인덱스] : 문자열 형태로 출력
}