몽상실현개발주의

[따배씨] 11.6 다양한 문자열 함수들 본문

Language/C

[따배씨] 11.6 다양한 문자열 함수들

migrationArc 2021. 6. 9. 17:39

[따배씨] 11.6 다양한 문자열 함수들

따배씨 - 따라하며 배우는 C언어

11강 문자열 함수들

11.6 다양한 문자열 함수들

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

void fit_str(char*, unsigned int);

int main(){
    // strlen() : return length of the string
    
    char msg[] = "Just," " do it!";
    puts(msg);
    printf("Length %lu\n", strlen(msg));
    fit_str(msg, 4);
    puts(msg);
    printf("Length %lu\n", strlen(msg));
}

void fit_str(char* str, unsigned int size){
    if (strlen(str) > size){
        str[size] = '\0';
    }
}
  • strlen(), 문자열의 길이 반환

 

 

 

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

int main(){
    // strcat() and strncat() : string concatenation    // 연쇄
    
    char str1[100] = "First string";
    char str2[] = "Second string";
    
    strcat(str1, ", ");
    strcat(str1, str2);
    
    puts(str1);
    // First string, Second string
    
    char str3[100] = "First string";
    char str4[] = "Second string";
    strncat(str3, str4, 2);
    // First stringSe
    
    puts(str3);
    
    return 0;
    
}
  • strcat(str1, str2) : str1 + str2, 문자열을 합침
  • strncat(str1, str2, n): str2 의 n개의 문자만큼 문자열을 합침

 

 

 

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

void fit_str(char*, unsigned int);

int main(){
    // strcmp() and strncmp() : compare string (not characters)
    
    printf("%d\n", strcmp("A", "A"));
    // 0
    printf("%d\n", strcmp("A", "B"));
    // -1
    printf("%d\n", strcmp("B", "A"));
    // 1
    printf("%d\n", strcmp("Hello", "Hello"));
    // 0
    printf("%d\n", strcmp("Banana", "Bananas"));
    // -1
    printf("%d\n", strcmp("Bananas", "Banana"));
    // 1
    printf("%d\n", strncmp("Bananas", "Banana", 6));
    // 0
    
    return 0;
}
  • strcmp(str1, str2) : str1 과 str2 를 비교, 문자열 비교
    • 같으면 0 반환, 앞의 문자열의 ASCII code 기준 더 빠르면 1, 느리면 -1
    • 문자열의 문자를 하나씩 비교하여 ASCII code 기준 우선순위 판별

 

 

 

 

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

int main(){
    // strcopy() and strncopy() : 문자열 복사
    
    char dest[100] = "";
    char source[] = "Start programming!";
    
    // dest = "Str Something";
    // dest = source;
    
    strcpy(dest, source);
    puts(dest);
    // Start programming!
    strncpy(dest, source, 5);
    puts(dest);
    // Start programming!   // '\0' is not added!
    
    char dest2[100] = "";
    strcpy(dest2, source + 6);
    puts(dest2);
    // programming!
    
    strcpy(dest2+6, "coding!");
    puts(dest2);
    // progracoding!
    return 0;   
}
  • 문자열을 배열로 선언후, 새로운 문자열로 직접 변경시 에러 발생
    • "Array type 'char [100]' is not assignable"
  • strcpy(str1, str2) : str1 의 메모리 공간에 str2 문자열 데이터 복사
  • strncpy(str1, str2, n) : str1 의 메모리 공간에 str2 문자열의 n 의 갯수만큼 잘라서 복사

 

 

 

 

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

int main(){
    // sprintf() : 출력할 문자열을 변수에 받아 줌
    
    char str[100] = "";
    int i = 123;
    double d = 3.14;
    sprintf(str, "%05d.png %f", i, d);
    puts(str);
    // 00123.png 3.140000
    
    return 0;
}
  • sprintf(str, "%d string", i) : printf() 로 출력하게 될 문자열을 받아와 변수에 저장

 

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

 

Comments