입력 길이를 미리 알 수 없는 문자열은 필요한 크기만큼 동적 할당할 수 있다. 할당한 메모리는 사용이 끝난 뒤 반드시 해제한다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *items[3] = { NULL };
char buffer[100];
for (size_t i = 0; i < 3; ++i) {
if (fgets(buffer, sizeof buffer, stdin) == NULL) break;
buffer[strcspn(buffer, "\n")] = 0;
items[i] = malloc(strlen(buffer) + 1);
if (items[i] != NULL) strcpy(items[i], buffer);
}
for (size_t i = 0; i < 3; ++i) free(items[i]);
}malloc()이 실패할 수 있으므로 반환값을 확인해야 한다. 입력은 길이 제한이 없는 함수 대신 fgets()를 사용한다.
댓글을 불러오고 있습니다.