scanf(%d-%d-%d
时间: 2024-04-26 20:18:18 浏览: 133
scanf("%d-%d-%d")是C语言中的一个输入函数,用于从标准输入中读取一串数字,并按照指定的格式进行解析。在这个例子中,"%d-%d-%d"表示要读取的数字应该按照"数字-数字-数字"的格式输入。
具体来说,scanf函数会根据格式字符串中的指示符"%d"来读取整数,并将读取到的值存储到对应的变量中。在这个例子中,"%d-%d-%d"表示要读取三个整数,并使用"-"作为分隔符。
例如,如果用户输入"2022-01-01",那么scanf函数会将2022存储到第一个%d对应的变量中,将01存储到第二个%d对应的变量中,将01存储到第三个%d对应的变量中。
需要注意的是,scanf函数会根据格式字符串中的指示符进行解析,如果输入与指定的格式不匹配,可能会导致解析错误或者读取到错误的值。
相关问题
warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d - %d- %d",&a,&b,&c);
这个警告是因为在调用scanf函数时,没有检查其返回值。scanf函数返回成功读取的参数数量,如果没有成功读取任何参数,则返回0。如果忽略了scanf函数的返回值,可能会导致程序出现错误。为了避免这种情况,可以使用if语句来检查scanf函数的返回值,例如:if(scanf("%d",&a)){}; 这样,如果scanf函数成功读取了一个整数,if语句就会执行空语句,否则if语句就不会执行。这样可以避免出现警告信息。
student.h文件为/* student.h: 头文件中包含Student类型,两种格式的输入函数,输出函数 */ #include <stdio.h> typedef struct { int y, m, d; //y,m,d域变量存放年、月、日,同类型的域变量可以成批定义 } Birthday; //Birthday是出生日期类型 typedef struct { char no[7]; char name[10]; char sex[3]; Birthday birth; int grade[4]; } Student; //Student是学生类型 /* inputstud1: 多行输入1个学生的各项信息,统计总分项 */ void inputstud1(Student * p) { int i,m; printf("请输入学生的各项信息:\n"); printf("学号:"); scanf("%s",p->no); printf("姓名:"); scanf("%s",p->name); printf("性别:"); scanf("%s",p->sex); printf("出生日期(yyyy-mm-dd):"); scanf("%d-%d-%d",&p->birth.y,&p->birth.m,&p->birth.d); printf("语文:"); scanf("%d",&p->grade[0]); printf("数学:"); scanf("%d",&p->grade[1]); printf("英语:"); scanf("%d",&p->grade[2]); for(m=0,i=0;i<3;i++) m+=p->grade[i]; p->grade[3]=m; } /* inputstud2: 一行输入1个学生的各项信息,统计总分项 */ void inputstud2(Student * p) { int i,m; printf("请输入学生的学号、姓名、性别、出生日期、语文、数学、英语等信息:\n"); scanf("%s%s%s",p->no, p->name, p->sex); scanf("%d-%d-%d",&p->birth.y,&p->birth.m,&p->birth.d); for(m=0,i=0;i<3;i++) //输入各科成绩并统计总分 { scanf("%d",&p->grade[i]); m+=p->grade[i]; } p->grade[3]=m; } /* 逐行显示学生指针p所指向的数组成员开始的n个成员 */ void outputstud(Student *p, int n) { int i,j; printf(" %-7s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n","学号","姓名","性别","出生日期","语文","数学","英语","总分"); //使用\t制表符上下左对齐显示学生信息 for(i=0;i<n;i++) { printf("%-3d%-7s\t%s\t%s\t",i+1,p[i].no, p[i].name, p[i].sex); printf("%d-%d-%d", p[i].birth.y, p[i].birth.m, p[i].birth.d); for(j=0;j<4;j++) printf("\t%d", p[i].grade[j]); printf("\n"); } }
这是一个C语言的头文件,定义了两个结构体类型:Birthday和Student,分别表示出生日期和学生信息。它还定义了三个函数:inputstud1、inputstud2和outputstud,分别用于输入学生信息(可以逐行输入或一行输入)、计算学生总分并输出学生信息。这些函数可以在其他C语言程序中调用,实现学生信息的输入、计算和输出。
阅读全文