Написать программу на основе следующих требований:
(i) Определить структуру с именем Noun, которая содержит строку с именем singular, а другую строку с именем множественного числа.
(ii) Написать функциюnamed множественное число, которое преобразует существительное в единственном числе во множественное число и сохраняет его во множественном числе в структурной переменной.Функция должна получить структуру в качестве выходного аргумента и ничего не возвращать.Правила преобразования существительного в единственном числе во множественное число приведены ниже:
'y' Замените его на 'ies'
's', 'ch', 'sh', 'x'Добавить 'es'
Другие Добавить 's'
(iii) Написать еще одну функцию с именем addNouns, которая откроет двоичный файл nouns.dat для добавления, и добавить в него некоторые существительные.Функция должна получить структурную переменную (как определено в (i) выше) в качестве входного аргумента и вернуть 1 (true), чтобы указать, что данные были успешно добавлены, или вернуть 0 (false) в противном случае.[Примечание: не добавляйте, если существительное найдено в двоичном файле.]
(iv) Ваша программа должна разрешать непрерывный запрос единственного существительного для преобразования, пока больше не будет доступных существительных.
* В7.Напишите программу для чтения данных из nouns.dat (созданного в Q6).Запишите данные из nouns.dat в текстовый файл nouns.txt, а также отобразите их на экране в формате, показанном ниже: Таблицы инструментов Церковных церквей Таблицы Таблицы Копирование Копий
Я использую MS Visual Studio2017 версия 15.9.4 продолжает давать мне ошибку, как синтаксическая ошибка!Но я не могу найти, что не так с моим кодом.Программа может записывать данные в двоичный файл, но когда я читаю эти данные в структурную переменную, это дает мне неизвестный символ ...
int addNouns(Noun *s);
void pluralize(Noun *noun);
typedef struct{
char singular[30], plural[30];
}Noun;
void pluralize(Noun *noun)
{
int len;
FILE *f2;
f2 = fopen("nouns.dat", "rb");
if (f2 == NULL)
{
printf("Unable to open file!\n");
exit(-1);
}
while (fread(&noun->singular, sizeof(noun->singular), 1, f2) != 0) {
len = strlen(noun->singular);
if (noun->singular[len - 1] == 'y')
{
noun->singular[len - 1] = 'i';
noun->singular[len] = 'e';
noun->singular[len + 1] = 's';
*noun->plural = noun->singular;
}
else if (noun->singular[len - 1] == 's' || noun->singular[len - 1] == 'ch' ||
noun->singular[len - 1] == 'sh' || noun->singular[len - 1] == 'x')
{
noun->singular[len - 1] = 'e';
noun->singular[len] = 's';
*noun->plural = noun->singular;
}
else {
noun->singular[len - 1] = 's';
*noun->plural = noun->singular;
}
}
}
int addNouns(Noun *s)
{
char yon;
FILE *f1;
f1 = fopen("nouns.dat", "ab");
printf("Do you want to enter nouns>");
scanf("%c", &yon);
while (toupper(yon) == 'Y') {
printf("Enter a nouns(singular)>");
scanf(" %[^\n]", &s->singular);
fwrite(&s->singular, sizeof(s->singular), 1, f1);
printf("Do you want to enter nouns>");
scanf(" %c", &yon);
}
if (fwrite(&s->singular, sizeof(s->singular), 1, f1)==1)
return 1;
else
return 0;
fclose(f1);
}
void main()
{
Noun noun;
addNouns(&noun);
pluralize(&noun);
printf("Singular\t\tPlural\n");
printf("%s\t\t%s", noun.singular, noun.plural);
system("pause");
}
Надеюсь, что результат может быть таким, как показано ниже: ЦерковьЦеркви Наборы инструментов Наборы таблиц Таблицы Копии Копий