孩子,你这个代码很多错误。
惠城ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
1 编译错误:result=(studentarr+6);地址赋值给结构体对象?
2 scanf("%s,%s,%s,%s,%c,%d",STU[i].name,STU[i].surname,STU[i].UUN,STU[i].department,STU[i],每个变量前都要加
3 printf("%s %s %s %s %c %d",findOldest.name,findOldest.surname,findOldest.UUN,findOldest.department,findOldest.gender,findOldest.age);函数名称的变量?错了吧?
4 严重错误:结构体中如:name这种char*根本存不下scanf输入的字符串的,需要把所有char*改成char数组
5 for(i=3;i6;i++){ scanf ...}这种貌似可能搞不定的,没法多次循环输入多次,这点哥也不确定。
最后附上简单修改的代码,我没时间,没帮你改涉及scanf的部分。
#include stdlib.h
#include stdio.h
typedef struct{
char* name;
char* surname;
char* UUN;
char* department;
char gender;
int age;
}student_t;
student_t* findOldest(student_t *studentarr){
//student_t temp;
int olderAge;
int sequence;
//student_t result;
int i;
sequence = 0;
olderAge = studentarr-age;
for(i=1;i3;i++)
{
//if(studentarr-age (studentarr+1)-age){
// temp=*(studentarr+i);
// *(studentarr+i)=*(studentarr+1+i);
// *(studentarr+i+1)=temp;
//}
printf("age[%d]\n", studentarr[i].age);
if(olderAge studentarr[i].age)
{
olderAge = studentarr[i].age;
sequence = i;
printf("sequence[%d]\n", sequence);
}
}
//result = *(studentarr+6);
//return result;
return (studentarr+sequence);
}
int main() {
/* BEGIN ANSWER */
student_t STU[3]={
{"John","Bidhop","d1234","Inf",'m',20},
{"Lady","Cook","s2345","Eng",'f',17},
{"James","Jackson","s3456","Eng",'m',19}
};
int i;
//for(i=3;i6;i++){
//printf("please type the data of students\n");
// printf("name,surname,UUN,department,gender,age\n");
// scanf("%s,%s,%s,%s,%c,%d",STU[i].name,STU[i].surname,STU[i].UUN,STU[i].department,STU[i].gender,STU[i].age);
//}
student_t *stu=STU;
student_t* oldest = findOldest(stu);
printf("%s %s %s %s %c %d\n",oldest-name,oldest-surname,oldest-UUN,oldest-department,oldest-gender,oldest-age);
/* END ANSWER */
return EXIT_SUCCESS;
}
//在结构体中包含函数指针,
//这样,可以使用结构体,调用函数。
//这个有点像C++的面向对象的类
//十分好用。
#include "stdio.h"
struct DEMO
{
int x,y;
int (*func)(int,int); //函数指针
};
int add2(int x,int y)
{
return x+y;
}
int main()
{
int ret=0;
struct DEMO demo;
demo.func=add2; //结构体函数指针赋值
ret=demo.func(3,4);
printf("func(3,4)=%d\n",ret);
}
#include stdio.h
#include stdlib.h
#define LINE_MAX 80
struct body{
char data[100]; //要定义成数组才可以,不然,还要去分配内存
int num;
};
void create(struct body *bd); //结构体定义后,才能使用结构体类型,所以,移动到定义之后
int main(int argc, char *argv[]) {
int choose;
struct body *bd;
bd = (struct body*)malloc(sizeof(struct body));
while(1)
{
printf(" *******************欢迎来到文章编辑系统********************\n");
printf("1. 创建新文本\n");
printf("2. 统计文本\n");
printf("5. 退出系统\n");
printf("请选择你需要的功能的序号:");
scanf("%d",choose);
switch(choose)
{
case 1:
printf("创建新文本\n");
create(bd);
continue;
case 2:
printf("统计文本\n");
continue;
case 5:
printf("谢谢您的使用!\n");
break;
default:
printf("请正确输入!\n");
continue;
}
if(choose == 5)
break;
}
return 0;
}
void create(struct body *bd)
{
printf("编辑文本,Enter键保存\n");
scanf("%s",bd-data);//结构体指针引用成员用-, 同时,格式串应该是%s
printf("您输入的文本是:%s\n",bd-data); //同上
}
struct node next;只有一个实体next,虽然写在循环里,但编译时就提前到前面合适的地方去了,所以循环只操作了一个next!