Условие задачи: Определить, сколько раз в данном текстовом файле g встречается строка UNIX. Вроде составил прогу, но почему-то не работает...
#include <stdio.h> #include <string.h>
int main () { FILE *fp; int k,n; char line1[255],line2[5]="UNIX"; if ((fp=fopen("test.txt","r"))==NULL) { printf("Oshibka pri otkrytii faila.\n"); exit(1); } fgetc(fp); while ((!feof(fp)) if k=strcmp(line1,line2) n=n++; fgetc(line1,255,fp); printf("\n%dKolichestvo vhozhdeniy",n); return 0; } }
volvo
22.04.2008 14:15
Потому что сначала надо откомпилировать, а это сделать невозможно - синтаксис неправильный.
n = 0; while(!feof(fp)) { fgets(s, MAX_LEN, fp); p = strtok(s, delimiter); while(p) { if(!strcmp(p, "UNIX")) n += 1; p = strtok(NULL, delimiter); } } printf("\n%d - Kolichestvo vhozhdeniy", n); return 0; }
Что непонятно?
Спасибо большое за помощь! Можно уточняющий вопрос?
n = 0; while(!feof(fp)) { fgets(s, MAX_LEN, fp); p = strtok(s, delimiter); while(p) { if(!strcmp(p, "UNIX")) n += 1; p = strtok(NULL, delimiter);
В этом кусочке мы сначала инициализируем функцию strtok, а потом непосредственно используем? То есть, при отсутствии лексемы, подлежащей возврату, возвращается нулевой указатель?
volvo
22.04.2008 14:59
Ну да, если лексемы в строке закончились, в p возвращается NULL, и цикл завершается.
Гость
29.04.2008 9:57
Цитата(volvo @ 22.04.2008 14:59)
Ну да, если лексемы в строке закончились, в p возвращается NULL, и цикл завершается.
Спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.