2013-07-01 5 views
0

문자열을 쉼표로 구분하려면 strtok을 사용하려고합니다. 이 줄은 다음과 같습니다.strtok 및 (null) in C

A:K149, A:N171, A:T172 

다음 코드를 사용하고 있습니다.

pch=strtok(line,","); 
printf("%s\n",pch); 

     while(pch!=NULL){ 
     pch=strtok(NULL,", ");   
      printf("%s\n",pch); 
     } 

그러나 인쇄됩니다입니다

A:K149 
A:N171 
A:T172 

(null) 

어떻게 끝에 여분의 라인과 (널) 제거합니까?

답변

1

시도 다음 문자 (문자열) 시퀀스는 strtok을 사용합니다. 내용을 인쇄하기 전에 NULL에 대해 pch을 확인합니다.

+0

"**", "**를 구분 기호로 사용하고 strtok 응답을 다듬어 줄 것을 제안합니다. 따라서 **", "** and not ** **"로만 텍스트를 구분할 때 ** 역시 작동합니다. –

1

테스트하기 전에 줄이 Null 인 경우입니다.

기본적으로 루프에서 null이면 테스트 한 다음 값을 업데이트 한 다음 (null 일 수 있음) 인쇄합니다. 그래서 결국 null을 출력하고 null을보고 while 루프를 종료합니다. 다음

while(pch!=NULL){ 
printf("%s\n",pch); 
pch=strtok(NULL,", ");   
} 

먼저 값을 인쇄해야하고, 페치 -이 :

pch=strtok(line,","); 

while(pch!=NULL){ 
    printf("%s\n",pch); 
    pch=strtok(NULL,", ");   
} 
0
while(pch!=NULL){ 
printf("%s\n",pch); 
     pch=strtok(NULL,", ");   

     } 
당신은 그냥이 같은 while 루프에서 진술의 순서를 변경해야