accumulate 모으다; 축적하다
accustomed 익숙한
achieve 이루다, 성취하다
이런식으로 들어가 있는 txt 파일을 읽으려고 하니
char buffer[100];
while (!file.eof()) {
file >> buffer;
}
이런식으로 읽게되면 공백단위로 읽게되어 (모으다; 축적하다) 가 한번에 들어가야되는데
(모으다;) 따로 (축적하다) 따로 들어가게 된다.
영어단어와 뜻 사이에 있는 탭( '\t' ) 으로 구분하여 잘라서 사용하고 싶다면
strtok을 사용하면 된다!
////////////////////////////////////////////////////////
char* token = NULL;
char tk[] = "\t\n";
char buffer[100];
ENGLISH *tmp = NULL;
while (!file.eof()) {
memset(buffer, 0, sizeof(buffer));
file.getline(buffer, 100);
token = strtok(buffer, tk);
strcat(tmp->word, token);
token = strtok(NULL, tk);
strcat(tmp->mean, token);
}
이런식으로 getline으로 한줄을 받은 후
strtok 을 사용하여 특정 token단위로 잘라서 사용해주면 될 거 같다.
//////////////////////////////////////////////////////
원형
char* strtok(char* str, const char* delimiters);
str은 대상 문자열
delimiters는 구분자, 무엇으로 구분할 것인가를 문자열 형태로 지정
분리한 결과의 첫번째 주소값을 리턴
///////////////////////////////////////////////////////////////
중요!!!!!!!!!!!!!!!!!
token = strtok(NULL, tk); 을 쓰는 이유
첫번째 인자로 문자열의 주소값이 들어오면 거기서부터 분리를 시도하는데
만약 NULL이 들어오면 이전에 자기가 기억한 곳으로부터 분리 시도!!!!!!!
'공부 > C & C++' 카테고리의 다른 글
(함수, C++) 입력 버퍼 비우기 [cin.ignore()] (0) | 2016.04.16 |
---|---|
(함수) 메모리 값 바꾸기, 초기화 [memset] (0) | 2016.04.14 |
(에러) 'strcpy': This function or variable may be unsafe. (0) | 2016.04.01 |
(c언어) 콘솔창 멈추기 system("pause") (0) | 2016.01.08 |
(알고리즘) 알고스팟 폴리오미노 (1) | 2016.01.07 |