나의 작은 valley

[C언어]다양한 문자열 함수들 본문

Computer Science/[C언어] 문법 정리

[C언어]다양한 문자열 함수들

붕옥 아이젠 2022. 11. 23. 16:42
728x90

//strlen() : returns length of the string

예제 코드)

#include <stdio.h>


int main()
{
	char msg[] = "Just,"" do it!";
	puts(msg);
	printf("Length %d\n", strlen(msg));
    
    return 0;
 }

출력)

Just, do it!
Length 12

 

 

 

//strcat() : string concatenation, (고양이(cat) 아님!)

#include <stdio.h>

int main()
{
	char str1[100] = "First string";	//첫 str에는 공간을 충분히 할당을 해주어야한다.
	char str2[] = "Second string";

	strcat(str1, ", ");
	strcat(str1, str2);
	puts(str1)
	return 0;
}

출력)

First string, Second string

 

 

 

//strncat

#include <stdio.h>

int main()
{
	char str1[100] = "First string";	//첫 str에는 공간을 충분히 할당을 해주어야한다.
	char str2[] = "Second string";

	strncat(str1, str2, 2);	// Append 2 chartors
	puts(str1);

	return 0;
}

출력)

First stringSe

cf)스스로 strncat()과 같은 함수를 만들어보는 것을 권장한다.이는 굉장히 좋은 프로그래밍 공부법이다. Implement strncat() function in C을 구글에 검색해보면 정답을 알 수 있다. 나의 경우 열심히 my_strncat()을 만들어보려고 했으나 실패했다. 그러나 한번 만들어보려고 시도해보고 def를 보니깐 이해가 쑥쑥 되더라.

 

 

 

//입력값을 비교하는 함수

: strcmp와 strncmp

예제코드)

#include <stdio.h>

int main()
{
	printf("%d\n", strcmp("Hello", "Hello"));
	printf("%d\n", strcmp("Banana", "Bananas"));
	printf("%d\n", strcmp("Bananas", "Banana"));
	printf("%d\n", strncmp("Bananas", "Banana", 6));	//6글자만 비교

	return 0;
}

출력)

0
-1
1
0

>> 같으면 0, 전자의 문자열이 더 크면 1 반대면 -1이 반환

TODO) implement strcmp! 

 

 

 

//strcopy() and strncopy()

#include <stdio.h>

int main()
{
	char dest1[100] = "";

	char source[] = "Start programming!";
	strcpy(dest1, source);
	//strncpy(dest2, source, 5);
	//strcpy(dest3, source + 5);
	//strncpy(dest4, source);
	//strncpy(dest5 + 6, "Coding!");
	puts(dest1);

	return 0;
}

출력)

Start programming!

 

예제코드_2)

#include <stdio.h>

int main()
{
	char dest2[100] = "";

	char source[] = "Start programming!";
	//strcpy(dest1, source);
	strncpy(dest2, source, 5);	// '\0' is Not Added
	//strcpy(dest3, source + 5);
	//strncpy(dest4, source);
	//strncpy(dest5 + 6, "Coding!");
	puts(dest2);

	return 0;
}

출력)

Start

strcpy def

막간 영어공부) Destination:목적지, Source: 쏘스

 

 

 

//sprintf 

예제 코드)

#include <stdio.h>

int main()
{
	char str[100] = "";
	int i = 123;
	double d = 3.14;
	sprintf(str, "%05d.png %f", i, d);
	puts(str);

	return 0;
}

출력)

00123.png 3.140000

>> 파일이름 지정해줄 때 많이 사용된다고 한다. 

 

 

comment) 아니 슬슬 너무 지엽적인 부분까지 공부하는 기분이 든다. strcmp, strncmp << 얘네 특히 !!

 

 

p.s) 직접 함수를 구현해보는 것은 평생 1번만 하면 된다. Implement 함수() in C로 정답을 찾을 수 있으니 어떤 함수를 배웠을 때 한번 정도는 직접 구현해보려고 하는 것이 공부의 큰 도움이 될 것이다.

728x90
Comments