Добавил:
bagiwow
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2 лаба / split
.c#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);//выводим результат
}