|
5鱼币
- #include<stdio.h>
- void main()
- {
- struct student
- {long num;
- char name[20];
- char sex;
- int age;
- float score[3];
- }a;
- struct student *head,*p;
- head=&a;p=&a;
- scanf("%ld%s%c%d%f%f%f",&p->num,p->name,&p->sex,&p->age,&p->score[0],&p->score[1],&p->score[2]);
- printf("%ld,%s,%c,%f,%f,%f\n",head->num,head->name,head->sex,head->age,head->score[0],head->score[1],head->score[2]);
- }
复制代码
scanf("%ld,%s,%c,%d,%f,%f,%f",&p->num,p->name,&p->sex,&p->age,&p->score[0],&p->score[1],&p->score[2]);和上面的输入有什么区别?在问问高手输入我们的数据后可以输出么?C的格式控制就是好麻烦,而且%s的输入还有漏洞,当我们输入到name的时候把“,”当成字符串的一部分的了。用代码板上的输入用空格格开但是输出的结果.....!!!
谢谢高手提点啊!!!!
|
最佳答案
查看完整内容
童鞋问的问题其实很复杂,首先,scanf函数执行的是严格匹配制度,如果是scanf("%ld%s%c%d%f%f%f",&p->num,p->name,&p->sex,&p->age,&p->score[0],&p->score[1],&p->score[2]);,则scanf按格式取值,如果中间加了逗号,那你一定要输入逗号,再输入你需要的值。举个例子: scanf("%d,%d",&i,&j); 输入:12 ,13回车 但是,j!=13. //注意,12后有一个空格,why?
原因:我解释为,在scanf()中,格式字符串中普通字符(不包括空白字符) ...
|