나의 작은 valley
[C언어]다양한 문자열 함수들 본문
//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
막간 영어공부) 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로 정답을 찾을 수 있으니 어떤 함수를 배웠을 때 한번 정도는 직접 구현해보려고 하는 것이 공부의 큰 도움이 될 것이다.
'Computer Science > [C언어] 문법 정리' 카테고리의 다른 글
[C언어] 명령줄 인수 (0) | 2022.11.26 |
---|---|
[C언어] 정렬(sort) (0) | 2022.11.24 |
[C언어] 문자열을 출력하는 다양한 방법 (2) | 2022.11.21 |
[C언어] 문자열을 입력받는 다양한 방법 (0) | 2022.11.19 |
[C언어] 문자열의 배열 (0) | 2022.11.19 |