C 언어에서 "공백 문자열"은 일반적으로 길이가 0인 문자열을 의미한다.
공백 문자열은 문자 '\0' 하나만을 포함하며, 이 문자는 문자열의 끝을 나타내는 널 종료 문자(null terminator)이다.
1. 표현 방식
공백 문자열은 "" 로 표현된다.
char emptyString[] = ""; || const char* emptyStringPtr = "";
2. 메모리 크기
공백 문자열은 메모리에 하나의 바이트를 차지하며, 이는 널 종료 문자('\0')임
3. 용도
공백 문자열은 종종 문자열을 초기화할 때 사용되거나, 함수의 리턴 값으로 문자열이 비어 있음을 나타낼 때 사용된다.
4. 공백 문자열과 관련된 함수
strlen
: 문자열의 길이를 계산하는 함수. 공백 문자열의 길이는 0임
char empty[] = "";
printf("Length: %zu\n", strlen(empty)); // 출력: Length: 0
strcpy & strncpy
문자열을 복사하는 함수. 공백 문자열을 다른 문자열에 복사하면 대상 문자열도 공백 문자열이 됨
char str[10];
strcpy(str, ""); // str 이 공백 문자열로 설정됨
printf("str is '%s'\n", str); // 출력: str is ''
strcmp & strncmp
두 문자열을 비교하는 함수임. 공백 문자열을 다른 공백 문자열과 비교하면, 결과는 0 (동일)이 된다.
char empty1[] = "";
char empty2[] = "";
if (strcmp(empty1, empty2) == 0) {
printf("The strings are identical.\n"); // 출력: The strings are identical.
}
주의 사항:
공백 문자열과, "빈 공간을 포함한 문자열"을 혼동하지 않도록 주의해야 한다. 둘의 차이가 뭐냐고 ?
예를 들어, 빈 공간을 포함한 문자열의 경우 " "는 공백 문자 하나를 포함하는 문자열로, 길이가 1이다.
공백 문자열은 길이가 0이라는 점에서 많은 차이가 있음!
문자열을 다룰 때는 항상 널 종료 문자('\0')를 고려해야 하며, 이는 모든 C 문자열의 필수 요소이다.
공백 문자열은 문자열의 초기 상태나 특정 조건에서의 반환 값 등을 표현하는 데 자주 사용된다.
어떤 상황에서 쓰이는지 예시별로 정리하였다.
예시 1: 문자열 초기화
문자열 변수를 선언할 때 공백 문자열로 초기화하여, 해당 변수가 안전하게 빈 상태에서 시작되도록 할 수 있다.
#include <stdio.h>
#include <string.h>
int main() {
char buffer[100] = ""; // 버퍼를 공백 문자열로 초기화
// 버퍼 사용 전의 상태 출력
printf("Initial buffer state: '%s'\n", buffer);
// 버퍼에 데이터 쓰기 시도
strcpy(buffer, "Hello, world!");
printf("Buffer after copying: '%s'\n", buffer);
return 0;
}
예시 2: 함수에서 공백 문자열 반환
어떤 조건이 만족되지 않을 때 함수에서 공백 문자열을 반환하는 예이다. 이 경우, 함수는 공백 문자열을 가리키는 포인터를 리턴할 수 있다.
#include <stdio.h>
const char* getMessage(int code) {
switch (code) {
case 1:
return "Success";
case 2:
return "Error: Invalid operation";
default:
return ""; // 기본값으로 공백 문자열 반환
}
}
int main() {
int code = 3;
const char* message = getMessage(code);
if (message[0] == '\0') { // 메시지가 공백 문자열인지 체크
printf("No message for code %d\n", code);
} else {
printf("Message: %s\n", message);
}
return 0;
}
예시 3: 입력 값 검증 후 초기화
사용자로부터 입력을 받고, 입력이 유효하지 않은 경우 문자열을 공백 문자열로 초기화하는 예이다.
#include <stdio.h>
#include <string.h>
int main() {
char userInput[256];
printf("Enter your name (no digits allowed): ");
fgets(userInput, sizeof(userInput), stdin);
userInput[strcspn(userInput, "\n")] = '\0'; // 개행 문자 제거
// 입력 값 검증
for (int i = 0; userInput[i] != '\0'; i++) {
if (isdigit(userInput[i])) {
strcpy(userInput, ""); // 유효하지 않은 입력 처리
break;
}
}
if (userInput[0] == '\0') {
printf("Invalid input provided.\n");
} else {
printf("Hello, %s!\n", userInput);
}
return 0;
}
'C 언어' 카테고리의 다른 글
순열 알고리즘: C 프로그래밍에서의 구현 (1) | 2024.05.02 |
---|---|
2차원 배열 동적 할당 시 해제 (0) | 2024.04.28 |
문자를 숫자로 변환하기 (0) | 2024.04.20 |
토큰(token): 문자열이나 코드를 구성하는 작은 단위 (0) | 2024.04.14 |
2차원 배열 메모리 할당과 포인터 (0) | 2024.04.10 |