2014-11-25 7 views
1

나는 다음과 같은 소스 코드를 가지고 :strtok를 내가 모르는 빈 문자열 또는 무엇인가를 줄

#include <stdio.h> 
#include <time.h> 
#include <string.h> 

int main(int argc, char *argv[]) 
{ 

    char string[100]; 
    printf("Give me some text. \n"); 
    fgets(string, 100, stdin); 

    char delimiter[]=" "; 
    char *erg; 

    erg=strtok(string, delimiter); 

    while(erg != NULL){ 
     printf("Wort: %s \n", erg); 

     erg=strtok(NULL, delimiter); 
    } 

    return 0; 
} 

내가 원하는 것처럼 텍스트 "ABC 데프"에 넣어 예를 들어, 프로그램이 작동 일하다. 그것은 "abc"와 "def"라는 단어를 출력합니다. 그러나 "abc def"텍스트를 넣으면 "abc", "def"및 ""가 인쇄됩니다. 마지막 빈 ""을 인쇄하고 싶지 않습니다. 누군가 필터링 할 수있는 방법을 알려주시겠습니까?

는 Gruß, 앙드레

+1

'char delimiter [] = "\ n";' – BLUEPIXY

답변

0

은 IMO, 당신은

  1. 처럼 fgets(string, 100, stdin);

    당신은 여러 가지 방법으로이 작업을 수행 할 수 있습니다에 fgets()에 의해 마지막으로 읽은 \n을 제거하는 데 필요한 \n에 포함 구분 기호 목록. 예 : " \n".

  2. 수동으로 문자열의 길이를 확인하고 마지막 위치에서 \n\0으로 바꿉니다.
0

fgets 당신이 string.So가 \0string\n을 대체 할

string[strlen(string)-1]='\0'; 

를 사용하여 입력 한 후 누릅니다 \n 문자와 함께 전체 문자열을 가져옵니다.