Доброго времени суток. Очень срочно нужна помощь с написанием программы на языке си! Даю последние баллы! Часть задания я сделала, но вот "последний кусочек " задачи никак не получается решить. Умоляю, помогите.
задание было таким:
Дан файл тхт
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;
}
Answers & Comments
Verified answer
Объяснение:
#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(