Предмет: Информатика, автор: kumiho9fox

Доброго времени суток. Очень срочно нужна помощь с написанием программы на языке си! Даю последние баллы! Часть задания я сделала, но вот "последний кусочек " задачи никак не получается решить. Умоляю, помогите.
задание было таким:
Дан файл тхт
1) а.out открыть файл, если его нет сообщить об этом.
2)Найти строку (/n заканчивается) с наибольшим количеством гласных букв и вывести на экран.
3)На входе 2 строки, заменить все вхождения первой строки на вторую строку.
Не получается сделать 3 пункт.
Буду очень благодарна за помощь!
вот такой код я написал:
#include <stdio.h>
#include <string.h>
#include <assert.h>
#define VOWELS "AaEeIiOoUuYy"

size_t count_vowels(const char * s)
{
size_t cnt = 0;

for (s = strpbrk(s, VOWELS); s; s = strpbrk(s + 1, VOWELS))
cnt += 1;

return cnt;
}

#define FILE_NAME "file.txt"

int main(void)
{
char str[BUFSIZ], vowelsfull[BUFSIZ];
size_t curVovels, maxVovels;
FILE * fin = fopen(FILE_NAME, "r");
assert(fin);

if (!fgets(vowelsfull, BUFSIZ, fin))
{
fprintf(stderr, "Input file is empty or read error!\n");
return (1 | fclose(fin));
}
maxVovels = count_vowels(vowelsfull);
printf("%s", vowelsfull);

while (fgets(str, BUFSIZ, fin))
{
printf("%s", str);
curVovels = count_vowels(str);
if (curVovels > maxVovels) {
maxVovels = curVovels;
strcpy(vowelsfull, str);
}
}
if (ferror(fin) | fclose(fin))
fprintf(stderr, "Something wrong with input file!\n");

printf("\n\nMost vowels full string (contains %zu vowels):\n%s", maxVovels, vowelsfull);

return 0;
}​

Ответы

Автор ответа: yy534974
0

Объяснение:

#include <stdio.h>

#include <string.h>

int main() {

char fileName[20];

char str[1000];

char maxStr[1000];

char replace1[1000];

char replace2[1000];

int maxVowels = 0;

int vowels = 0;

int i, j, k;

FILE *file;

printf("Enter file name: ");

scanf("%s", fileName);

file = fopen(fileName, "r");

if (file == NULL) {

printf("File does not exist.\n");

return 1;

}

while (fgets(str, 1000, file) != NULL) {

vowels = 0;

for (i = 0; i < strlen(str) - 1; i++) {

if (str[i] == 'a' || str[i] == 'e' || str[i] == 'i' || str[i] == 'o' || str[i] == 'u' ||

str[i] == 'A' || str[i] == 'E' || str[i] == 'I' || str[i] == 'O' || str[i] == 'U') {

vowels++;

}

}

if (vowels > maxVowels) {

maxVowels = vowels;

strcpy(maxStr, str);

}

}

printf("String with the maximum number of vowels: %s\n", maxStr);

printf("Enter the first string to replace: ");

scanf("%s", replace1);

printf("Enter the second string to replace with: ");

scanf("%s", replace2);

rewind(file);

while (fgets(str, 1000, file) != NULL) {

if (strstr(str, replace1) != NULL) {

i = strstr(str, replace1) - str;

str[i] = '\0';

strcat(str, replace2);

strcat(str, &str[i + strlen(replace1)]);

}

printf("%s", str);

}

fclose(


kumiho9fox: не совсем понятно как тут сделано
Похожие вопросы
Предмет: Геометрия, автор: mischechka1