标题:求大佬们指点一下,困扰了许久的问题。。。
只看楼主
咸大吉
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-1-25
结帖率:0
已结贴  问题点数:20 回复次数:4 
求大佬们指点一下,困扰了许久的问题。。。
(关于回文串的程序)
#include<stdio.h>
#include<string.h>
#define N 10000
int main()
{
    char str[N];
    int i,len,n,j,flag;
    scanf("%d",&n);
    getchar();
    for(i=0;i<n;i++)
    {
        fgets(str,N,stdin);
        len=strlen(str)-1;
        if(len<=1)
        {
            fputs(str,stdout);
        }
        else
        {
            for(j=0;j<len&&j!=len;len--,j++)
            {
                if(str[j]==str[len])
                {flag=1;}
                else
                {flag=0;break;}
            }
            if(flag==1)
            {fputs(str,stdout);}
        }
    }
    return 0;
}

为什么用fgets()和fputs()就不能正常运行程序,然后一改成gets()和puts()就可以得到想要的结果.
搜索更多相关主题的帖子: fgets flag str for 困扰 
2020-01-25 23:18
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:5 
参见百度百科fgets() https://baike.baidu.com/item/fgets/10942211?fr=aladdin   延伸拓展模块 “注意1”“注意2”。

我只用过这两个函数处理文件读写,了解不够深入。只是觉得可能是百科里提到的清空流机制导致的问题

φ(゜▽゜*)♪
2020-01-26 09:13
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
就不能正常运行程序

说得太笼统了,不知道具体是啥情况。

gets 和 fgets 的区别:
fgets 在读到行尾时,保留 \n 这个换行符;
gets 早就被C标准废弃并移除了。
2020-01-26 10:51
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:5 
fgets用于从指定文件流fp指向的文件中,将换行符连同它前面的字符读到buf中,当然字符总数(包括换行符)要小于n - 1。因为此buf是以NULL结尾的,这就意味着我们最多只能读n - 1个字符到buf中。如果大于n,则读前n - 1个字符到缓冲区buf,当下次调用继续读该行。特别注意,该函数不能用于读二进制文件。
换行符和前n - 1个字符,谁先满足就结束。
gets用于从stdin将换行符前面的字符读到buf中,并丢掉此换行符。由于该函数没有指定buf的长度,容易造成溢出。
2020-01-26 14:05
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:5 
len=strlen(str)-2;

len长度需要减2,因为gets是以\0结尾的,而fgets是以\n\0结尾的。

[此贴子已经被作者于2020-1-26 14:20编辑过]


一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-01-26 14:12



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




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

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