728x90
C언어에서는 문자열을 표현하기 위해 char의 배열을 사용합니다.
문자열
큰 따옴표로 둘러싸여 있으면 문자열로 간주합니다.
중요한 것은 해당 문자열을 저장하는 배열의 마지막에는 컴파일러가 자동으로 널 문자('\0')[아스키 값 0]를 추가해줍니다.
따라서 원하는 문자열이 있다면, 해당 길이 + 1만큼의 배열 공간이 필요합니다.
#include <stdio.h>
int main(){
char str[10] = "apple";//문자열
char str2[10] = {'a','p','p','l','e'};//문자열이 아님
char str3[10] = {'a','p','p','l','e', '\0'};//문자열
char str4[6] = "apple";//문자열
printf("%s\n", str);
printf("%s\n", str2);
printf("%s\n", str3);
printf("%s\n", str4);
}
참고 : \0에 대해
printf("%d", '\0'); 은 0을 출력합니다. (숫자 0을 나타냅니다.)
printf("%c", '\0'); 는 아무것도 출력하지 않습니다.
문자열 끝 판단
문자열의 끝은 처음으로 나오는 널 문자('\0')로 판단합니다.
문자열 복사 - strcpy
문자열을 복사하기 위해서는 반복문을 사용하거나 strcpy 메서드를 사용합니다.
#include <stdio.h>
#include <string.h>
int main(){
char str[10] = "apple";//문자열
char str2[10] = {'a','p','p','l','e'};//문자열이 아님
char str3[10] = {'a','p','p','l','e', '\0'};//문자열
char str4[6] = "apple";//문자열
char capy_str[10];
char capy_str2[10];
char capy_str3[10];
char capy_str4[6];//문자열
strcpy(capy_str, str);
strcpy(capy_str2, str2);
strcpy(capy_str3, str3);
strcpy(capy_str4, str4);
printf("%s\n", capy_str);
printf("%s\n", capy_str2);
printf("%s\n", capy_str3);
printf("%s\n", capy_str4);
}
문자열 비교 - strcmp
매개변수로 전달되는 첫번째 실인자의 값 - 두번째 실인자의 값을 반환합니다.
#include <stdio.h>
#include <string.h>
int main(){
char a[10] = "a";
char A[10] = "A";
printf("%d\n", strcmp(a, A));
printf("%d\n", strcmp(A, a));
printf("%d\n", strcmp(a, "a"));
}
널 문자는 0이고 NULL이다
#include <stdio.h>
int main() {
int a= '\0';
int b= 0;
int c= NULL;
char d= '\0';
char e= 0;
char g= NULL;
char * h= '\0';
char * i= 0;
char * j= NULL;
printf("int - '\\0' : %d\n", a);
printf("int - '\\0' : %c\n", a);
printf("int - '\\0' : %s\n", a);
printf("int - 0 : %d\n", b);
printf("int - 0 : %c\n", b);
printf("int - 0 : %s\n", b);
printf("int - NULL : %d\n", c);
printf("int - NULL : %c\n", c);
printf("int - NULL : %s\n", c);
printf("char - '\\0' : %d\n", d);
printf("char - '\\0' : %c\n", d);
printf("char - '\\0' : %s\n", d);
printf("char - 0 : %d\n", e);
printf("char - 0 : %c\n", e);
printf("char - 0 : %s\n", e);
printf("char - NULL : %d\n", g);
printf("char - NULL : %c\n", g);
printf("char - NULL : %s\n", g);
printf("char * - '\\0' : %d\n", g);
printf("char * - '\\0' : %c\n", g);
printf("char * - '\\0' : %s\n", g);
printf("char * - 0 : %d\n", h);
printf("char * - 0 : %c\n", h);
printf("char * - 0 : %s\n", h);
printf("char * - NULL : %d\n", i);
printf("char * - NULL : %c\n", i);
printf("char * - NULL : %s\n", i);
}
728x90
'c언어' 카테고리의 다른 글
[C언어] - Call By Value (0) | 2022.04.20 |
---|---|
[C언어] - 포인터 (0) | 2022.04.19 |
[C언어] - 배열 (0) | 2022.04.19 |
[C언어] - 재귀함수 (0) | 2022.04.19 |
[C언어] - register, volatile 키워드 (0) | 2022.04.19 |