Условие задачи: Определить, сколько раз в данном текстовом файле 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;
}
}
Потому что сначала надо откомпилировать, а это сделать невозможно - синтаксис неправильный.
Вот так, скажем:
#include <stdio.h>
#include <string.h>
#define MAX_LEN 255
int main () {
FILE *fp;
char s[MAX_LEN + 1], *p;
int n;
char *delimiter = " ,.\n";
if((fp = fopen("test.txt","rt")) == NULL) {
printf("Oshibka pri otkrytii faila.\n");
return 1;
}
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;
}
#include <stdio.h>
#include <string.h>
#define MAX_LEN 255
int main () {
FILE *fp;
char s[MAX_LEN + 1], *p;
int n;
char *delimiter = " ,.\n";
if((fp = fopen("test.txt","rt")) == NULL) {
printf("Oshibka pri otkrytii faila.\n");
return 1;
}
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);
Ну да, если лексемы в строке закончились, в p возвращается NULL, и цикл завершается.