为什么这个编译不通过呢?找不出错误?希望帮帮忙
为什么这个编译不通过呢?找不出错误?希望帮帮忙 贴代码 本帖最后由 TyCk 于 2018-12-14 19:44 编辑第三行和第十九行对ReadBook的声明存在冲突,参数书写有问题。
试着修改一下*的位置,感觉有点问题。
另外,尝试修改下Book结构体声明的语句的位置,放在第三行前面呢?{:10_335:} #include<stdio.h>
void ReadBook(struct Book *);
void PrintBook(struct Book *);
struct Date
{
int year;
int month;
int day
};
struct Book
{
char title;
char author;
float price;
struct Date date;
char publisher
};
void ReadBook(struct Book *book)
{
printf("请输入书名:");
scanf("%s",book->title);
printf("请输入作者:");
scanf("%s",book->author);
printf("请输入售价:");
scanf("%.2f",&book->price);
printf("请输入出版日期:");
scanf("%d-%d-%d",&book->Date.year,&book->Date.month,&book->Date.day);
printf("请输入出版社:");
scanf("%s",book->publisher);
}
void PrintBook(struct Book *book)
{
printf("书名:%s\n",book->title);
printf("作者:%s\n",book->author);
printf("售价:%.2f\n",book->price);
printf("出版日期:%d-%d-%d\n",book->Date.year,book->Date.month,book->Date.day);
printf("出版社:%s\n",book->publisher);
}
int main()
{
int N,i;
printf("欢迎光临图书馆!\n");
printf("请输入需录入图书数:\n");
scanf("%d",&N);
putchar('\n');
struct Book book;
struct Book*pbook
for(i=0;i<N;i++)
{
pbook=&book;
}
for(i=0;i<N;i++)
{
printf("请录入第%d本图书信息....\n",i+);
ReadBook(pbook);
}
putchar('\n');
printf("图书信息录入完毕,现在开始打印验证....\n");
for(i=0;i<N;i++)
{
printf("打印第%d本图书信息\n",i+);
PrintfBook(pbook);
}
putchar('\n');
printf("===打印完毕===\n");
return 0;
} 第9行,第17行:缺少 ; 结尾。
第28行,第37行:Date.year 错误,应该是date.year 。。。。
第47行,第48行(struct Book book;struct Book*pbook):c语言不支持动态分配数组。后面还缺少 ;
55行:i+??i ......
第62行:i+??i ...... 中文 ;应该改成英文 ;
63行: PrintfBook(pbook); ==>PrintBook(pbook); 我当时看视频和题主有同样的问题,大概率视频那个代码写的有问题吧,毕竟他用的Linux 百里狂生 发表于 2018-12-14 21:23
第9行,第17行:缺少 ; 结尾。
第28行,第37行:Date.year 错误,应该是date.year 。。。。
第47行,第48 ...
照着改了,但还是报错,动态分配数组好像是可行的
#include<stdio.h>
void ReadBook(struct Book *);
void PrintBook(struct Book *);
struct Date
{
int year;
int month;
int day;
};
struct Book
{
char title;
char author;
float price;
struct Date date;
char publisher;
};
void ReadBook(struct Book *book)
{
printf("请输入书名:");
scanf("%s",book->title);
printf("请输入作者:");
scanf("%s",book->author);
printf("请输入售价:");
scanf("%.2f",&book->price);
printf("请输入出版日期:");
scanf("%d-%d-%d",&book->date.year,&book->date.month,&book->date.day);
printf("请输入出版社:");
scanf("%s",book->publisher);
}
void PrintBook(struct Book *book)
{
printf("书名:%s\n",book->title);
printf("作者:%s\n",book->author);
printf("售价:%.2f\n",book->price);
printf("出版日期:%d-%d-%d\n",book->Date.year,book->Date.month,book->Date.day);
printf("出版社:%s\n",book->publisher);
}
int main()
{
int N,i;
printf("欢迎光临图书馆!\n");
printf("请输入需录入图书数:\n");
scanf("%d",&N);
putchar('\n');
struct Book book;
struct Book*pbook;
for(i=0;i<N;i++)
{
pbook=&book;
}
for(i=0;i<N;i++)
{
printf("请录入第%d本图书信息....\n",i+1);
ReadBook(pbook);
}
putchar('\n');
printf("图书信息录入完毕,现在开始打印验证....\n");
for(i=0;i<N;i++)
{
printf("打印第%d本图书信息\n",i+);
PrintBook(pbook);
}
putchar('\n');
printf("===打印完毕===\n");
return 0;
} 我帮你改了一下
#include<stdio.h>
void ReadBook(struct Book *);
void PrintBook(struct Book *);
struct Date
{
int year;
int month;
int day;
};
struct Book
{
char title;
char author;
float price;
struct Date date;
char publisher;
};
void ReadBook(struct Book *book)
{
printf("请输入书名:");
scanf("%s", book->title);
printf("请输入作者:");
scanf("%s", book->author);
printf("请输入售价:");
scanf("%f", &book->price);
printf("请输入出版日期:");
scanf("%d-%d-%d", &book->date.year, &book->date.month, &book->date.day);
printf("请输入出版社:");
scanf("%s", book->publisher);
}
void PrintBook(struct Book book)
{
printf("书名:%s\n", book.title);
printf("作者:%s\n", book.author);
printf("售价:%.2f\n", book.price);
printf("出版日期:%d-%d-%d\n", book.date.year, book.date.month, book.date.day);
printf("出版社:%s\n", book.publisher);
}
int main()
{
int N, i;
printf("欢迎光临图书馆!\n");
printf("请输入需录入图书数:\n");
scanf("%d", &N);
putchar('\n');
struct Book *pbook = (struct Book*)malloc(N * sizeof(struct Book));//在堆上动态分配内存
for (i = 0; i<N; i++)
{
printf("请录入第%d本图书信息....\n", i );
ReadBook(&pbook);
}
putchar('\n');
printf("图书信息录入完毕,现在开始打印验证....\n");
for (i = 0; i<N; i++)
{
printf("打印第%d本图书信息\n", i );
PrintBook(pbook);
}
putchar('\n');
printf("===打印完毕===\n");
return 0;
} 第三行和第十九行对ReadBook的声明存在冲突,参数书写有问题。
试着修改一下*的位置,感觉有点问题。 百里狂生 发表于 2018-12-15 12:17
我帮你改了一下
也报错,而且第52行不用&吧 我知道了,结构体声明在函数之前才对
页:
[1]