Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 유료강좌
- MFC
- C언어
- 마이크로소프트
- MFC 예제
- C
- 별찍기 기초
- Tipsware
- 정보처리기사
- 별찍기
- Time
- mfc 실습
- 도움말
- do it c
- win32
- 정처기 독학
- linux
- 핵심 요약
- 김성엽
- 포트폴리오
- 충무창업큐브
- SSG
- C++
- ListBox
- MyTread
- 실습
- tips강좌
- mysql
- 미가공
- MyThread
Archives
- Today
- Total
History
strtok_s 함수를 이용해서 쉼표로 문자열을 구분해서 줄바꿈 출력하기 본문
728x90
반응형
아래와 같이 쉼표로 구분된 문자열이 있습니다.
"Hello~! ,My name is minki kim~ ,How are you today~? ,:)"
이 문자열을 쉼표 구분해서 아래와 같은 이미지처럼 나오게 하려면 어떻게 해야 할까? 이번 차시에는 strtok_함수를 사용해서 구현해보겠다.
strtok_s함수는 문자열에서 지정한 문자로 문자열을 분리하는 함수이다. 이 함수는 string.h 헤더 파일을 추가하면 사용이 가능해진다.
예를 들어서 "abc,def,ghi" 라는 문자열이 있을 때 , 단위로 문자열을 구분해야 한다면
char arr[] = "abc,def,ghi";
char delimiter[] = ","; // 구분자로 사용할 문자열 현재는 ,를 대입하겠다.
char *p_next_pos; // 다음 작업이 진행될 위치의 주소
char *p_token = strtok_s(str, delimiter, &p_next_pos);
// p_token에는 분리된 "abc" 문자열의 주소가 저장됨
// p_next_pos에는 arr배열의 "...,def..."에서 'd' 문자에 해당하는 주소가 저장됨
p_token = strtok_s(NULL, delimiter, &p_next_pos);
// 다음 문자열을 분리할 때는 기존 문자열을 사용하겠다는 뜻으로 첫 번째 인자에 NULL 적음
// p_token에는 분리된 "def" 문자열의 주소가 저장됨
// p_next_token에는 arr 배열의 "...,...,ghi"에서 'g' 문자에 해당하는 주소가 저장됨
p_token = strtok_s(NULL, delimiter, &p_next_pos);
// p_token에는 분리된 "ghi" 문자열의 주소가 저장됨
// p_next_token에는 arr배열에 저장된 문자열의 마지막 위치인 NULL 문자의 주소가 저장됨
이제 처음의 문자열로 코드를 구성해보면 아래와 같다.
#include<stdio.h>
#include<string.h>
#pragma warning(disable:4996)
int main()
{
char arr[]="Hello~! ,My name is minki kim~ ,How are you today~? ,:)";
char*p_next_pos; //,다음의 위치를 찾을 주소변수
char delimiter[]=","; //구분자 문자열
char* p_temp_str; //분리된 문자열
p_temp_str=strtok_s(arr,delimiter,&p_next_pos); //다음 작업에서 분리된 문자열 뒤에 시작 문자가
//위치한 주소가 저장된다.
for(int i=1; p_temp_str; i++){ //p_temp_str가 NULL을 반환하기 전까지 반복한다.
printf("%d - %s\n", i, p_temp_str);
p_temp_str=strtok_s(NULL,delimiter,&p_next_pos); //,를 기준으로 계속 다음 문자열을 찾고
//구분자를 찾지 못하면 null을 반환한다. 첫번째 인자에 NULL을 쓴 이유는 기존 문자열을 사용하겠다는
//뜻이다.
}
return 0;
}
728x90
반응형
'C,C++ > 개념 실습 프로그래밍' 카테고리의 다른 글
문자열에 포함된 숫자를 문자로 변경하기 (0) | 2022.09.21 |
---|---|
쉼표로 문자열을 구분해서 줄바꿈 출력하기 - 함수 직접 구현 (2) | 2022.09.21 |
[c언어]쉼표로 문자열을 구분해서 줄바꿈 출력하기 (0) | 2022.09.19 |
fread (0) | 2022.07.14 |
오버로딩2 (0) | 2021.04.15 |
Comments