【发布时间】:2015-08-01 19:09:30
【问题描述】:
我有一个任务是编写一个用 C 语言支持艺术画廊的程序。它必须是使用列表的基于菜单的程序。我写了菜单的第一个功能,我需要一些帮助来写其他三个。所以我有一个唯一的绘画代码结构,作者姓名,绘画名称,价格,绘画年份。我必须创建一个函数,使用唯一代码删除一幅画,打印出每幅画的所有信息,并使用所述代码再次修改一幅画。数据必须是使用链表的动态类型结构。这是迄今为止的程序。
#include <stdio.h>
void addPainting(void);
void erasePainting(void);
void printData(void);
void modifyData(void);
int main()
{
struct paintings
{
char code[20];
char name[50];
char paintingName[50];
double price;
int year;
}painting[100];
int choice;
do
{
printf("Menu\n");
printf("To add a painting press 1.\n");
printf("To erase a painting press 2.\n");
printf("To print data for all paintings by authors alphabetically press 3.\n");
printf ("To modify data for a painting press 4.\n");
printf("To exit the program press 5.\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
{
addPainting();
break;
}
case 2:
{
erasePainting();
break;
}
case 3:
{
printData();
break;
}
case 4:
{
modifyData();
break;
}
default: printf ("Wrong choice. Try again\n");
break;
}
}while (choice !=5);
void addPainting()
{
FILE *fp;
struct paintings painting;
printf("Enter code:");
scanf("%s", &painting.code);
printf("Enter the name of the author:");
scanf("%s", &painting.name);
printf("Enter the name of the painting:");
scanf("%s", &painting.paintingName);
printf("Enter price:");
scanf("%lf", &painting.price);
printf("Enter the year of creation:");
scanf("%d", &painting.year);
if ((fp=fopen("paintings","wb"))==NULL)
exit(1);
if ((fwrite (&painting,sizeof(painting),1,fp)!=1))
exit(2);
fclose(fp);
}
}
【问题讨论】:
-
函数
addPainting()好像嵌套在main()中 -
请不要在其他函数中定义函数/结构...
-
欢迎您!如果您告诉我们您的问题到底是什么,我们会为您提供帮助。仅仅“它不起作用”对我们来说是不够的。
-
我必须写我提到的三个函数,我不知道如何以及从哪里开始。这就是问题所在。
-
您的代码不会编译。在继续其他问题之前,您必须先了解这一点,但是,有很多关于如何在 C 中创建和使用链表的教程。Here is one。 Google C 中的链接列表 了解更多信息。
标签: c function menu linked-list structure