![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
-Winniepoohless- |
![]()
Сообщение
#1
|
Гость ![]() |
Условие задачи: Определить, сколько раз в данном текстовом файле 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 |
![]()
Сообщение
#2
|
Гость ![]() |
Потому что сначала надо откомпилировать, а это сделать невозможно - синтаксис неправильный.
Вот так, скажем: #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;
}
Что непонятно? |
-Winniepoohless- |
![]()
Сообщение
#3
|
Гость ![]() |
Потому что сначала надо откомпилировать, а это сделать невозможно - синтаксис неправильный. Вот так, скажем: #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);
В этом кусочке мы сначала инициализируем функцию strtok, а потом непосредственно используем? То есть, при отсутствии лексемы, подлежащей возврату, возвращается нулевой указатель? ![]() |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Ну да, если лексемы в строке закончились, в p возвращается NULL, и цикл завершается.
|
Гость |
![]()
Сообщение
#5
|
Гость ![]() |
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 18:47 |