首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

小弟我for(int d=0;d<5;d++)为啥让小弟我循环了6次?

2012-03-08 
我for(int d0d5d++)为啥让我循环了6次??C/C++ code#include db.h#include windows.h#include std

我for(int d=0;d<5;d++)为啥让我循环了6次??

C/C++ code
#include <db.h>#include <windows.h>#include <stdio.h>struct variable{    char name[5][8];    double value[5];};void print_error(int ret)//获取数据库错误函数{    if(ret != 0)        printf("ERROR: %s\n",db_strerror(ret));}void main(){    int ret;    //设置一个int类型变量用于接收错误代码。    variable var;    DB *pdb;//创建数据库指针    db_create(&pdb,NULL,0);//创建数据库    ret=pdb->open(pdb,NULL,"var.eg",NULL,DB_HASH,DB_CREATE,0664);//打开数据库    print_error(ret);//如果打开错误,这里返回错误信息    DBT key,data;//创建一个DBT结构体类型的变量    memset(&key,0,sizeof(DBT));//初始化    memset(&data,0,sizeof(DBT));    memset(&var,0,sizeof(variable));    printf("请输入5个最大长度为7的变量名:\n");    for(int i=0;i<5;i++)    {        scanf("%s",&var.name[i][8]);    }    for(int b=0;b<5;b++)    {        printf("%s\n",&var.name[b][8]);    }    printf("请输入5个double类型的变量值:\n");    for(int d=0;d<5;d++)//这个循环出错,我明明设置的小于5,为什么他能循环6次??++++++++    {//scanf让我输入了6次!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++        scanf("%f\n",&var.value[d]);        key.data=&var.name[d];        key.size=sizeof(var.name[d]);        data.data=&var;        data.size=sizeof(variable);        ret=pdb->put(pdb,NULL,&key,&data,0);//把关键字key和数据data关联在一起,并写入数据库        print_error(ret);    }    pdb->sync(pdb,0);//手动写入内存中的数据到硬盘    memset(&var,0,sizeof(variable));    memset(&key,0,sizeof(DBT));    memset(&data,0,sizeof(DBT));    while(1)    {        char uu[8];        int ii;        printf("请输入查询哪个函数(长度不允许超过7位),并输入查询第几个值(<5):");        scanf("%s,%f",&uu,&ii);        printf("================================================\n");//查看var.value是否初始化成功。        for(int g=0;g<5;g++)        {            printf("%f\n",&var.value[g]);        }                printf("================================================\n");                key.data=uu;        key.size=sizeof(uu);        data.data=&var;        data.size=sizeof(variable);        ret=pdb->get(pdb,NULL,&key,&data,0);//按照关键字key的值读取数据。        print_error(ret);        printf("key=%s,data=%f\n",key.data,var.value[ii]);    }    pdb->close(pdb,0);}


[解决办法]
....进入for循环之前 fflush(stdin);清除缓冲试试
[解决办法]
scanf("%s",&var.name[i][8]);
数组越界~ 不能是8 
0~7
 这种低级错误要细心细心啦~
[解决办法]
%s ? 还是%c 到底是获取字符还是获取字符串
[解决办法]
C/C++ code
 for(int i=0;i<5;i++)    {        scanf("%s",&var.name[i]);    }    for(int b=0;b<5;b++)    {        printf("%s\n",&var.name[b]);    }
[解决办法]
考虑一下回车?
[解决办法]
scanf("%lf\n",&var.value[d]);
没哟\n
[解决办法]
同意七楼 隔离一下

热点排行