sscanf - получить n-е слово в предложении

Я новичок в C, и я пытаюсь просканировать строку from stdin и извлечь из него n-е слово. Прямо сейчас я жестко запрограммировал его, где вы можете сохранить первую, вторую или третью запись в предложении, и вот как это выглядит:

int set_to_nth_word(char* word, char* input, int n)
{
    char word1[20];
    char word2[20];
    char word3[20];
    if(sscanf(input, "%s %s %s", word1, word2, word3) < n)
    {
        printf("You didn't enter enough values\n");
        return 0;
    }
    else
    {
        if(n == 1) strcpy(word, word1);
        else if(n == 2) strcpy(word, word2);
        else if(n == 3) strcpy(word, word3);
        return 1;
    }
}

Код, вызывающий этот метод:

char *input = (char *) malloc (1);
if(getline(&input, (size_t)0, stdin) != -1)
{
    char word[20];
    if(set_to_nth_word(word, input, 1))
    {
        printf("Success");
    }
}

Помимо поиска Решение этой проблемы, я буду рад, если кто-нибудь укажет на плохой стиль или неправильное кодирование!

5
задан Petwoip 29 November 2010 в 03:12
поделиться