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

C语言中缓存读取有关问题

2012-09-06 
C语言中缓存读取问题C/C++ code#includeleap.hint main(int argc, char* argv[]){int year 1900int*

C语言中缓存读取问题

C/C++ code
#include"leap.h"int main(int argc, char* argv[]){        int year = 1900;    int* pYear = &year;    judgeScf(pYear);    return EXIT_SUCCESS;}int judgeScf(int** tempYear) {    char bufTemp = '\0';    if (tempyear == NULL) {        return FALSE;    }    do {        if (**tempyear <= MAXYEAR && **tempyear >= MINYEAR) {            printf("Please input year!\n");        } else {            printf("Data error! Please input year!\n");        }        scanf("%d", *tempyear);        scanf("%1[^\n]",&bufTemp);    /*判断缓存中的内容,如果得到的首字符是回车或者'\0'即视为输入非法*/        if(!(bufTemp == '\0' || bufTemp == '\r')){            printf("The data has forbidden character!");            return 0;        }        bufTemp = '\0';    } while (**tempyear > MAXYEAR || **tempyear < MINYEAR);         return TRUE;}

函数是想实现对输入的判断,并且得到函数中的输入值。不过在做读取缓存操作之后,函数中
运行虽都是正确的,但出参的时候值就变为随机值了,苦思冥想不得要领。因为不懂汇编,
无法看汇编信息,求论坛神人能找出原因。头文件中的定义与问题无关我就不发了。另外,程
序是在Cygwin中gcc编译环境下运行的。第一次发帖,说明不够清晰的话,请多多包涵。

[解决办法]
"出参的时候值就变为随机值",这句话是什么意思,是说judgeScf返回值是随机的?judgeScf返回值是TRUE或FALSE。
[解决办法]
int* pYear = &year;
judgeScf(pYear);
你上面定义的是指向int类型的指针,你在下面函数定义的是指向 int指针的指针

函数中定义有误
函数里tempYear是指向Pyear 所以你在函数里更改的值不会反映到主函数中。

热点排行