Вывести последовательность слов, начиная с указанного - C (СИ)

Формулировка задачи:

I need help,guys Нужно написать программу, которая выделяет из строки заданное количество слов, начиная со слова с заданным номером. Строка, количество слов, номер первого слова передаются в функцию в качестве параметров. При реализации функции запрещается пользоваться функциями стандартной библиотеки языка C. Под термином «слово» понимается любая последовательность символов, ограниченная любым количеством пробелов и/или символом начала/конца строки. С меня большущее спасибо.


textual

Код к задаче: «Вывести последовательность слов, начиная с указанного - C (СИ)»

#include <stdio.h>
#define is_space(c) ((c) == ' ' || (c) == '\t' || (c) == '\n')
 
//индексация слов начинается с единицы
const char* substr_words(const char* s, const char** e, int index, int cnt){
    const char* p = NULL;
    int  i = 1, n = 0, last = index + cnt;
 
    if(last <= 0)
        return NULL;
 
    *e = NULL;
    do {
        if(!is_space(*s) && *s)
            ++n;
        else if(n > 0){
            if(i == index)
                p  = s - n;
            else if(i == last){
                *e = s - n;
                break;
            }
            ++i;
            n = 0;
        }
    } while(*s++ != '\0');
 
    if(*e == NULL)
        *e = s - 1;
    return p;
}
 
int main(void){
    const char* a, *b;
    char s[] = "ADD SUB MUL DIV IDIV IMUL XCHG";
 
    a = substr_words(s, &b, 3, 4);
    if(a != NULL){
        //вывод
        printf("%.*s\n", (int)(b - a), a);
 
        //можно вывести так
        while(a != b)
            putchar(*a++);
    }
    getchar();
    return 0;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

15   голосов, оценка 4.267 из 5

Источник
Похожие ответы