问题是:
为什么初始化信息的段落一定要用
gets(num);
p->price = atoi(num);
这样的格式进行输入,而直接用
scanf("%d", &p->price); 就会输入错误呢?
新手真心求教,代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
struct booktype //这里定义一个结构体,
{ //用来记录书的名字和价格 。
char name[20];
int price;
}a[5];
struct booktype *p;
char num[20];
for (p=a; p<a+5; p++){ //这段是初始化信息 (问题段!!)
printf("输入书的信息:\n"); //如果是:
gets(p->name); //scanf("%d", &p->price); 则会输入错误,
gets(num); //原本输入5组数据,结果输入3组就结束了?!
p->price = atoi(num);
}
p=a; //这段是用来找价格最大值,
int i; //并输出最大的价格和书的名字。
int max_price;
char max_name[20];
max_price = p->price;
strcpy(max_name,p->name);
for (p=a+1; p<a+5; p++){
if (p->price>max_price){
max_price = p->price;
strcpy(max_name,p->name);
}
}
printf("%d %s", max_price, max_name);
return 0;
}