标题:fgets()读取\n的问题发现
取消只看楼主
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
结帖率:100%
已结贴  问题点数:10 回复次数:6 
fgets()读取\n的问题发现
fgets()函数会读取\n,把\n放到字符串里去,但是我发现也可以不让它把\n放进去

程序代码:
# include <stdio.h>

int main(void)
{
    
    char str[7];

    fgets(str,7,stdin);  //输入:12345,预留2个字符的空间,一个放\n,一个放\0 
    
    
    fputs(str,stdout);   //fputs本身没有换行效果,但是fgets读取了\n,输出后造成换行 
    
    return 0;
}


但如果我只预留1个字符的空间去放\0,发现\n就不会读取到字符串里面去,这样合适吗
搜索更多相关主题的帖子: 字符串 
2015-04-02 16:09
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
得分:0 
了解。

你醒了?快起来敲代码!!
2015-04-02 16:19
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
得分:0 
\n  被挤到了缓冲区里
下一个getchar()就会读取到\n
是吗?

你醒了?快起来敲代码!!
2015-04-02 16:30
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
得分:0 
程序代码:
# include<stdio.h>
int main(void)
{
    char str[7];
    char ch;
    fgets(str,7,stdin);
    
    ch=getchar();
    
    putchar(ch);
    putchar(ch);
    putchar(ch);
    putchar(ch);
    putchar(ch);
    return 0;
} 


这就是我写的测试程序,结果是输出了5个换行。。。
难道还有什么危险存在

你醒了?快起来敲代码!!
2015-04-02 16:47
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
得分:0 
貌似懂了,也就是要让str字符串有\0作为结束标志,不然puts会一直从str内存往后找\0,直到找到\0才会停止输出?

你醒了?快起来敲代码!!
2015-04-02 16:56
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
得分:0 
获益匪浅,谢谢T版主

你醒了?快起来敲代码!!
2015-04-02 17:09
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
得分:0 
恩恩。

你醒了?快起来敲代码!!
2015-04-02 22:51



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




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

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