C程序问题,scanf问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 10:37:07
目的,输入af 500 adf
显示af 500 adf

scanf("%s",p1->name); /*为什么输入这三个值的时候总是出现问题而自动结束呢?要怎么改呀*/
scanf("%f",p1->result);
scanf("%s",p1->addr);

#include "stdio.h"
#include "malloc.h"
#define LEN struct student
struct student
{
char name[20];
float result;
char addr[20];
struct student *next;
} *head,*p0,*p1;
int num=0;
main()
{char input[10];
void creat();
void insert();
void del();
void list();

while(strcmp(input,"exit")!=0)
{
scanf("%s",input);
if(strcmp(input,"creat")==0) creat();
else if(strcmp(input,"insert")==0) insert();
else if(strcmp(input,"del")==0) del();
else if(strcmp(input,"list")==0) list();

}
printf("BEY BEY");

}

scanf("%f",&p1->result); 加个取地址符

scanf("%s",p1->name);
scanf("%f",&p1->result);
scanf("%s",p1->addr);
要这么写的话,每个输入数据要以换行分割,不能用空格、逗号啥的;
或者改用这么写:
scanf("%[a-zA-Z]",p1->name);
scanf("%f",&p1->result);
scanf("%s",p1->addr);

这个是tc2.0的一个bug,你看看这个文件吧,或找找这方面的文章看看,你如果不是为了专业编程,建议把他写到一个含三个输入参数的scanf就行了.别分成三个scanf.

估计原因是字符串型的不用取地址的了.而其他的必须要取地址的了.
所以你修改为scanf("%f",&p1->result); 应该就可以了.