fscanf는 %s시 0같은 공백이 나올때까지 읽는다 함...
->머 암튼 여기저기 검색하면 나오긴 하는데 쨌든
아래와 같이 fscanf로 할라고 쳤을 때 문자열 좆같이 읽어짐
유니코드, ANSI 파일 등 인코딩에 따라서 한글 읽을 때 좆같기도 하고
%s, %s, %s, %s, %s
%s\t%s\t%s\t
근데 strtok으로 아래와 같이 하면 쉬움
http://cboard.cprogramming.com/c-programming/15395-parsing-tokens-strtok.html
+-----------------------------------
char batchLine[1000];
char batchTime[1000];
FILE* fp = fopen(filename, "rt"); //파일열고
char string[1000], seps[] = "\n,\t"; //이걸로 구분하고
char *p;
int tokenIndex= 0;
while(fgets( string, sizeof(string)-1,fp) != NULL) //한줄씩 읽어서 1000사이즈 char 배열에 넣고
{
/* Break into tokens. */
p = string;
p = strtok( string, seps ); /* Find first token*/
//한줄을 토큰으로 나누고 그 한줄에 대해서 계속 조지는 것임.
//따라서 "나이 이름 성별 전화번호 주소 " 이런식으로 되어 있을 때 index에 따라 데이터를 다른 곳에 받아서
//입력받아 사용할 수 있겠지...fscanf가 잘 되었으면 좋았는데...
while( p != NULL )
{
switch(tokenIndex)
{
case 0:
strcpy(batchTime, p);
break;
default:
break;
}
p = strtok( NULL, seps ); /* Find next token*/
tokenIndex++;
}
tokenIndex = 0;
/////////////////////////////////////////
}
fclose(fp);
-+------------------------------
또는 Boost 라이브러리 C++ 토큰, tokenizer
http://stackoverflow.com/questions/53849/how-do-i-tokenize-a-string-in-c
http://www.boost.org/doc/libs/1_36_0/libs/tokenizer/index.html
-> http://imssosso.tistory.com/16
부스트 설치...좆빠지네..이건 시간 없다
->http://warmz.tistory.com/903 이건 좀 쉽네
->10.0으로다가 함
compiler include paths : C:/boost/boost_1_58_0
linker library paths : C:/boost/boost_1_58_0/stage/lib
->일단..이건 뒤로 좀...시간도 많이 걸리고 라이브러리 추가하기도 귀찮고...
사용 방법도 그렇고..근데 확실히 C, C++이 C#보다 불편하기는 하다
파일에서 readline으로 한줄 읽기도 그렇고, 토큰 나누는것도 그렇고
------------------------------------------------
'컴퓨터 과학 & 영상처리 관련 > C / C++' 카테고리의 다른 글
C++ int* i = new int[]로 동적할당 시 메모리가 할당되는가? (0) | 2014.11.22 |
---|---|
C언어 바탕화면 경로 가져오는 함수 (레지스트리 이용) (0) | 2014.11.19 |
C++ process kill (0) | 2014.10.24 |
C++ visual studio 에서 소스 감쌀 때 C# #region 처럼 사용 시 (0) | 2014.03.31 |
c언어 파일 존재 여부 확인 함수 access() (0) | 2014.03.20 |