* "고블린, 10, 10, 10, 10"이라는 문자열을
문자열 Name, 정수 Str, 정수 Dex, 정수 Int, 정수 Luk
다섯 개의 변수에 나눠서 저장해 보자
* 파일 입출력에 요긴하게 쓸 수 있을 것 같다.
#include <iostream>
//sscanf 함수 에러 해제
#pragma warning(disable:4996)
#define BUFFER_SIZE 128
int main()
{
//소스 문자열 생성
char* stringarr = new char[BUFFER_SIZE];
memset(stringarr, 0, BUFFER_SIZE);
strcpy_s(stringarr, BUFFER_SIZE, "고블린, 10, 10, 10, 10");
//복사받을 문자열과 변수 생성
char* name = new char[BUFFER_SIZE];
memset(name, 0, BUFFER_SIZE);
int Str = 0, Dex = 0, Int = 0, Luk = 0;
//sscanf를 활용하여 문자열을 나누어 변수에 저장
sscanf(stringarr, "%[^,], %d, %d, %d, %d", name, &Str, &Dex, &Int, &Luk);
//잘 저장되었는지 출력
std::cout << "이름: " << name << std::endl;
std::cout << "힘 : " << Str << std::endl;
std::cout << "민첩: " << Dex << std::endl;
std::cout << "지능: " << Int << std::endl;
std::cout << "운 : " << Luk << std::endl;
//sscanf_s를 활용하여 문자열을 나누어 변수에 저장
//sscanf와의 차이점: 포인터의 경우 버퍼 사이즈를
//추가로 제공해주어야 한다.
sscanf_s(stringarr, "%[^,], %d, %d, %d, %d", name, BUFFER_SIZE, &Str, &Dex, &Int, &Luk);
//잘 저장되었는지 출력
std::cout << "이름: " << name << std::endl;
std::cout << "힘 : " << Str << std::endl;
std::cout << "민첩: " << Dex << std::endl;
std::cout << "지능: " << Int << std::endl;
std::cout << "운 : " << Luk << std::endl;
delete[] stringarr;
delete[] name;
return 0;
}

관련 문서
* 서식 지정자(%[^,]): https://hyrule.tistory.com/43
'자습' 카테고리의 다른 글
| 스택에 생성된 객체는 delete가 되지 않는다 (0) | 2022.05.07 |
|---|---|
| 변수)매번 생성과 동시에 값을 저장 vs 미리 생성해놓고 값 저장 (0) | 2022.05.03 |
| 부모 클래스의 소멸자에 가상함수를 쓰는 이유 (0) | 2022.04.27 |
| 실험실: 클래스의 소멸자에서 해당 클래스의 함수 호출이 가능한가? (0) | 2022.04.20 |
| 220413_자료구조_자동 확장 서클 큐(Circle Queue) (0) | 2022.04.18 |