注册 登录
编程论坛 C++教室

fgets函数使用疑惑

vfdff 发布于 2008-08-31 11:23, 1895 次点击
是不是 fgets 函数把键盘中输入字符压入缓存,当出现回车才停止输入
比如下面的代码,一次性输入32个字符后按回车,则fgets(md5_string,9,stdin);一次9个字符,分别经过4次把刚才输入的32个字符分批赋给md5[i] 呢??
for(i=0;i<4;++i)
{
    fgets(md5_string,9,stdin);
    sscanf(md5_string, "%x",&md5[i]);
    //翻转字节序
    str = (unsigned char *)(md5 + i);               
    ch = str[0];
    str[0] = str[3];
    str[3] = ch;
    ch = str[1];
    str[1] = str[2];
    str[2] = ch;
}
1 回复
#2
vfdff2008-08-31 11:32
printf("请输入32个字符的md5字符串:");
    
    for(i=0;i<4;++i)
    {
        fgets(md5_string,9,stdin);
        printf("\n%s",md5_string);
        sscanf(md5_string, "%x",&md5[i]);
        printf("\n%s",&md5[i]);
        //翻转字节序
        。。。。
    }
刚才做了个小试验,把 md5_string和&md5[i]输出来发现
1;fgets(md5_string,9,stdin);其实一次只接收8个输入字符,而不是9个
2:不知道格式化输入sscanf怎么操作,为什么第二次和第四次都是使用了相同的dddddddd输入
   即md5_string赋值相同,但是经sscanf(md5_string, "%x",&md5[i]);后&md5[i]内结果不一样??
1