Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 лаба / split

.c
Скачиваний:
15
Добавлен:
09.12.2013
Размер:
1.48 Кб
Скачать
#include <stdio.h>
#include <string.h>

int main() {
    FILE *file;
    char *fname = "some_file.txt";
    char buffer[100]; //массив в 200 символов куда читаем строки

    file = fopen(fname, "r"); // открываем файл

    if (file == 0) {//открыдся ли файл
        printf("Can't open file '%s'", fname);
        return 0;
    }
    
    int t = 0;//номер строки
    while (!feof(file)) {//читаем до конца файла
        fgets(buffer, sizeof (buffer), file);//читаем символы до конца сторки
        t++;
        if (t % 3 == 0) {
            printf("%s\n", buffer);//печатем саму третью строчку
            printMostLongWord(buffer);//ищем самое длинное слово
        }
    }

    fclose(file);
    return 0;
}

void printMostLongWord(char str[]) {
    char * pch;// этот указатель указывает посследовательно на слова из исходной сторки после разбиением её функцией strtok
    char * res; // указатель на самое длинное слово
    pch = strtok(str, " "); //деллим текст на пробелы и получаем ссылку на первое слово
    int maxsize = 0;
    while (pch != NULL) {
        int s = strlen(pch); 
        if (maxsize < s) { //если длинна слова превышает найденной максимальной величины
            res = pch; // запомнаем указатель на него
            maxsize = s; // и его длинну
        }
        pch = strtok(NULL, " ");//функция для получени ссылки на начало следующее слово
    }
    printf("%s: %d\n", res, maxsize);//выводим результат
}