2014-11-25 2 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» и «def». Но когда я ввел текст «abc def», он печатает «abc», «def» и «». Я не хочу распечатывать последний пустой "". Может кто-нибудь, пожалуйста, скажите мне, как отфильтровать это?

Gruß, Андре

+1

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

ответ

0

ИМО, вы должны избавиться от последнего \n прочитан fgets() в fgets(string, 100, stdin);

Вы можете сделать это во многих отношениях, как

  1. включают \n в ваш список разделителей. " \n", например.
  2. вручную проверьте длину строки, а в последнем положении замените \n на \0.
0

fgets получает всю строку вместе с \n характером, который при нажатии кнопки после ввода string.So использовать

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

заменить \n в string с \0.