задача: дан файл, содержащий некоторый текст. В новый файл записать самую длинную фразу и фразу с наибольшим количеством слов. Код:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define STRS 1024
#define SPACE ' '
void theLong(char* str) {
FILE* f;/файл/
int count = 0, max = 0, i = 0, j = 0;
char word[STRS] = { '\0' };
f = fopen("new.txt", "w");
if (!f) {
printf("ERROR!!!\n");
exit(1);
}
fclose(f);
for (i = j; str[i] != '\0'; i++) {
if (str[i] == SPACE)
continue;
count = 0;
for (j = i; str[j] != SPACE && str[j] != '\0'; j++) {
count++;
}
if (max < count)
max = count;
i = j;
}
f = fopen("new.txt", "a");
printf("ERROR!!!\n");
exit(1);
}
j = 0;
for (i = j; str[i] != '\0'; i++) {
if (str[i] == SPACE)
continue;
count = 0;
for (j = i; str[j] != SPACE && str[j] != '\0'; j++) {
word[count] = str[j];
count++;
}
if (max == count)
fprintf(f, "%s ", word);
for (i = 0; word[i] != '\0'; i++)
word[i] = '\0';
i = j;
}
fclose(f);
}
int main() {
FILE* f;
char str[STRS] = { "\0" };
f = fopen("lab7.txt", "r");
if (!f) {
printf("ERROR!!!\n");
exit(1);
}
fgets(str, STRS, f);
fclose(f);
theLong(str);
return 0;
}
Проблема заключается в том, что программа читает только первую строку файлов, игнорируя что находится на следующих
fgets(str, STRS, f); fclose(f);Что же вы хотите?... Все, как вы попросили. – Harry Jan 01 '23 at 21:06while(f!=eof)? – Jan 01 '23 at 22:16while((fread(str,STRS,1,f)==1) theLong(str), но ничего не происходит, компилируется без ошибок. Что-то сделано не так? как понял из интернета :1 параметр - буфер, в который будут прочитаны данные из файла, поэтому подумал, что могу использовать уже созданный массивstr– Jan 01 '23 at 22:38