2016-07-14 3 views
0

현재 텍스트 파일에서 읽기에서 할당 된 문자 배열을 분할하려고합니다. 지금 나는 구획 문자로 문제를 겪고 있으며 여러 개를 가질 수 있는지 알지 못합니다. 내가 구분하고자하는 것은 쉼표와 공백입니다. 지금까지 제 코드가 있습니다.C에서 여러 구분 기호를 사용하여 문자열 분할

#include <stdio.h> 
FILE * fPointer; 
fPointer = fopen("file name", "r"); 
char singleLine[1500]; 
char delimit[] = 
int i = 0; 
int j = 0; 
int k = 0; 


while(!feof(fPointer)){ 
    //the i counter is for the first line in the text file which I want to skip 

    while ((fgets(singleLine, 1500, fPointer) != NULL) && !(i == 0)){ 
     //delimit in this loop 
     puts(singleLine); 

    } 
    i++; 
} 

fclose(fPointer); 

return 0; 
} 

지금까지 발견 한 내용은 탭 등의 약자로 된 문자열을 사용하여 구분하는 방법입니다.

char Delimit[] = " /n/t/f/s"; 

그때 delimiter 매개 변수

아래 strtok를() 메소드에서이 문자열을 사용하지만이 늘 나를 구분 기호로 쉼표를 보자.

그리고이 모든 내용은 구분 된 문자열을 변수에 할당하기 시작할 수 있습니다.

샘플 입력 : P1,2, 3, 2

어떤 도움이나 참조는 감사 감사합니다.

+0

'strtok'를? 텍스트 파일의 샘플 라인을 포함 할 수 있습니까? '지금까지 찾은'방법은 무엇입니까? – thelaws

+0

@thelaws 설명이 필요하면 좀 더 자세한 정보를 추가하겠습니다. – Thorx99

+1

'strtok'에서 구분 기호로','를 사용할 수 있습니다. 여기에 그 예가 나와 있습니다. http://www.cplusplus.com/reference/cstring/strtok/ – thelaws

답변

1

strtok 메서드에서 ,을 구분 기호로 사용할 수 있습니다.

개봉과 탭에 \n\t을 사용하려고 한 것 같습니다 (/f/s은 무엇을 나타낼 것인지 모르겠습니다).

사용해보십시오이 :

char Delimit[] = " ,\n\t"; 

// <snip> 

char * token = strtok (singleLine, Delimit); 
while (token != NULL) 
{ 
    // use the token here 
    printf ("%s\n",token); 

    // get the next token from singleLine 
    token = strtok (NULL, Delimit); 
} 
샘플 입력에 P1,2, 3 , 2 변환 할

:

P1 
2 
3 
2 
+0

'strtok()'접근 방식의 문제점은 인접한 구분자의 시퀀스를 잘못 해석 할 수 있다는 것입니다 :'P1 ,,, 2,3,2'는 같은 출력을 생성 할 것이고, 빈 값은'strtok'을 사용하여 파싱 될 수 없습니다. – chqrlie

관련 문제