| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 420 人关注过本帖
标题:fgets疑惑
只看楼主 加入收藏
han1115
Rank: 2
等 级:论坛游民
帖 子:15
专家分:20
注 册:2012-8-11
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:8 
fgets疑惑
程序代码:
#include<stdio.h>
int main(void)
{
    char a[10];
    while(fgets(a,10,stdin))
        fputs(a,stdout);
    return 0;
}

为啥输入长度超过10的限制,fputs为啥能全部显示,定义数组不就没意思了么?求解 搞不明白啊
2012-11-30 16:02
Fisher~
Rank: 4
等 级:业余侠客
帖 子:93
专家分:222
注 册:2012-11-10
收藏
得分:7 
fgets()函数原型为
char *fgets(char *str,int n,FILE *fp)
功能:在文件指针fp所指文件位置读取n个字符并放入str字符数组中,读不到则返回Null
所以不是fgets()函数限制而是你定义的存储空间最大为10 限制了读取
2012-11-30 16:18
han1115
Rank: 2
等 级:论坛游民
帖 子:15
专家分:20
注 册:2012-8-11
收藏
得分:0 
输入0123456789十个数,按照fgets函数定义的应该读入数组中的数是012345678\n.
为什么fputs能输出0123456789\n呢?
真心不明白啥情况,定义看过好几遍了,没发现理解的那里不对啊
2012-11-30 16:26
han1115
Rank: 2
等 级:论坛游民
帖 子:15
专家分:20
注 册:2012-8-11
收藏
得分:0 
也就是我输入超过10个多少个字符,fputs也回显多少个字符。
2012-11-30 16:28
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
收藏
得分:7 
输入大于10的话,会被a循环存储,实际a的长度没有变化
2012-11-30 16:28
天剑山
Rank: 4
等 级:业余侠客
威 望:3
帖 子:119
专家分:266
注 册:2012-8-3
收藏
得分:7 
理论上fgetc会忽略换行符这类特殊字符
2012-11-30 16:31
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
收藏
得分:0 
楼主如果去掉 while 试一下,就很明了了
fputs也只能显示10个,数组只会存储10个字符的东西~
2012-11-30 16:32
han1115
Rank: 2
等 级:论坛游民
帖 子:15
专家分:20
注 册:2012-8-11
收藏
得分:0 
谢谢各位了,忘了最基本的流了 。
2012-11-30 16:45
ren613
Rank: 3Rank: 3
来 自:宣武
等 级:论坛游侠
帖 子:117
专家分:120
注 册:2012-11-20
收藏
得分:0 

天道酬勤
2012-11-30 17:56
快速回复:fgets疑惑
数据加载中...
 
   



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

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