프로그래밍 언어/C언어

C언어 기초이론 (문자열관련 함수)

chobyeonggyu03 2024. 6. 13. 14:01

STRLEN 함수란?

배열이나 함수의 길이를 int값으로 반환 시켜주는 함수

** STRLEN함수의 특징 **

1) 문자열 길이를 나타내주는 함수

2) 변수 뿐만 아니라 배열의 길이도 알 수 있음

3) int형태의 값으로 길이를 반환함

4) STRLEN함수를 사용하려면 #include <string.h>이라는 헤더파일을 선언해야 함

** STRLEN함수 사용방법 **

1) #include <string.h>

(STRLEN함수가 있는 헤더파일 선언)

2) strlen(arr);

(괄호안에 길이를 알고싶은 배열이나 변수입력)

 

/*
제목: 배열 예제 11-3
날짜: 2024.03.08.금
내용: char형 1차원 배열을 선언과 동시에 "good time"으로 초기화 한 후, 저장된 내용을 출력하기
*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>    // strlen 함수가 선언된 헤더 파일

int main() {

	char arr[] = "Good Time";
	int len = strlen(arr);

	for (int i = 0; i < len; i++) {
		printf("%c", arr[i]);
	}

	return 0;
}

 

 

 

 

SIZE OF 함수란?

차지하는 메모리 공간의 크기를 'byte' 단위로 바꿔 출력해주는 함수

 

** SIZE OF 함수의 특징 **

1) 문자열 길이를 나타내주는 함수로 자주 활용됨

2) 문자열 끝에 자동으로 null문자가 삽입되기에 실제 길이보다 길이가 +1 큼

3) 문자열 끝에 자동으로 null문자가 삽입되는 것은 0과1로만 이루어진 2진법에서 어디가 끝이고 어디가 시작인지 구분하기 위함임

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "Good Morning!";
    printf("배열 str1의 크기: %ld \n", sizeof(str1)); // sizeof는 배열의 전체 크기를 리턴
    printf("배열 str1의 문자열 길이 %ld \n", strlen(str1)); // strlen은 문자열의 문자 수를 리턴

    printf("문자 포인터 배열 크기 %c \n", str1[13]);
    printf("문자 포인터 문자열 길이 %d \n", str1[13]);

    return 0;
}

 

 

 

 

 

STRCMP 함수란?

String + Compare 를 합친 용어로, 두 문자열의 크기를 아스키코드를 활용하여 비교해주는 함수

** STRCMP함수의 특징 **

1) 두 문자열이 같은지 비교할 때 활용되는 함수

2) STRCMP함수를 사용하려면 #include <string.h>이라는 헤더파일을 선언해야 함

3) 앞의 변수가 작으면 -1, 같으면0, 크면 1로 -1,0,1로 결과값을 반환

** STRLEN함수 사용방법 **

1) #include <string.h>

(STRLEN함수가 있는 헤더파일 선언)

2) strlen(변수1, 변수2);

(괄호안에 비교하고싶은 변수2개를 입)

** scanf + 배열로 문자열 입력받기 **

 

/*
제목: 배열 예제 11-5
날짜: 2024.03.08.
내용: scanf를 활용하여 문자열 입력받기
*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

int main() {
    char str[50];
    int idx = 0;

    printf("문자열을 입력하세요: ");
    scanf("%s", str);  // 배열의 이름은 scanf 함수를 쓸 때 배열의 주소

    printf("\n");
    printf("입력받은 문자열: %s\n", str);

    printf("입력받은 문자열의 단어 출력: ");
    while (str[idx] != '\0') {
        printf("%c", str[idx]);
        idx++;
    }

    return 0;
}

 

 

 

 

** 주의사항 **

1) 배열을 통해 scanf함수 입력을 받을 때는 &를 붙이면 안됨

2) scanf 함수는 데이터를 공백을 기준으로 입력하기 떄문에 문자열을 입력받을 때 he is kind 라는 문자열을 he 까지만 입력받기에 공백까지 입력받는 함수는 따로있음 ( 나중에 배움)

/*
제목: 배열 예제 11-7
날짜: 2024.03.08.
내용: 사용자의 문자열 입력받기 char 배열 사용, null값 조건문과 배열의 문자열 역순으로 출력하기
*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

int main() {
    char EngWord[20];
    int i = 0;

    printf("영단어를 입력하세요: ");
    scanf("%s", EngWord);
    printf("입력받은 영단어: %s\n", EngWord);

    printf("영단어를 거꾸로 출력: ");
    while (EngWord[i] != '\0') { // null값을 만날 때까지 탐색
        i++;
    }

    // 거꾸로 출력 코드
    for (int k = i - 1; k >= 0; k--) {
        printf("%c", EngWord[k]);
    }

    return 0;
}

 

/*
제목: 배열 예제 11-5
날짜: 2024.03.08.
내용: scanf를 활용하여 문자열 입력받기
*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

int main() {
    char str[50];
    int idx = 0;

    printf("문자열을 입력하세요: ");
    scanf("%[^\n]s", str); // 사용자의 입력을 scanf를 사용하여 받음

    printf("\n");
    printf("입력된 문자열: %s \n", str);

    printf("문자열을 문자 단위로 출력: ");
    while (str[idx] != '\0') { // null 값이 나올 때까지 문자 출력
        printf("%c", str[idx]);
        idx++;
    }

    return 0;
}