标题:fgets函数使用疑惑
只看楼主
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
 问题点数:0 回复次数:1 
fgets函数使用疑惑
是不是 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;
}
搜索更多相关主题的帖子: sscanf fgets 函数 语法 
2008-08-31 11:23
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
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]内结果不一样??

base64.JPG (12.07 KB)
2008-08-31 11:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-230678-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.289001 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved