标题:求解strcmp函数只能比较gets()语句而不能比较fgets(a,sizeof(a),stdin)吗?
只看楼主
qq7918640
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2017-11-26
结帖率:77.78%
已结贴  问题点数:10 回复次数:26 
求解strcmp函数只能比较gets()语句而不能比较fgets(a,sizeof(a),stdin)吗?
如题:
在编写程序,运行的时候发现一个问题,那就是strcmp函数不能比较fgets(a,sizeof(a),stdin)的输入。直接上代码
程序代码:
#include<stdio.h>
#include<string.h>
#define N 20
int main()
{
    FILE*fp;
    char a;
    char mima[N]="yanglei10086";
    char c[N];
    printf("请输入密码:\n");
    fgets(c,sizeof(c),stdin);
    if(strcmp(c,mima)==0)
    printf("登陆成功\n");
    else
    {
    printf("登陆失败\n");
    printf("按任意键退出\n");
    getch();
    exit(0);
    }
    if((fp=fopen("ceshi.txt","w"))==NULL)
    {
        printf("打开失败\n");
        exit(0);
    }
    a=getchar();
    while(a!='\n')
    {
        fputc(a,fp);
        a=getchar();
    }
    fclose(fp);
    return 0;

 } 

还有测试图。

求解一下疑惑,谢谢了。
搜索更多相关主题的帖子: strcmp 比较 fgets sizeof printf 
2018-01-04 16:28
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:1 
第一,C语言没有gets函数。严格的说,在古代有过,后来被废弃
第二,fgets 获得的字符串后面可能有'\n'。(为了区分是读结束了,还是接受区已满)
2018-01-04 16:33
qq7918640
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2017-11-26
得分:0 
啥意思啊,意思是说我无论输入的是什么
程序得到的结果都会在后面加上一个\n导致怎么输入密码都错误吗?
求解。
2018-01-04 16:42
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
你错怪了strcmp函数了,这个函数在比较正确时,返回的是1.
2018-01-04 16:45
qq7918640
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2017-11-26
得分:0 
那为啥我用gets()输入时,相等的时候strcmp的返回值是0啊
2018-01-04 16:50
qq7918640
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2017-11-26
得分:0 
发现了一个新问题,求大佬解答,这个程序为啥我输入正确密码后,程序就结束了,不继续往后运行了呀。
2018-01-04 16:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:2 
fgets(c,sizeof(c),stdin);
看看c里面的是什么
char *p=c;
for (; *p; ++p)
   printf("%c %d\n", *p, *p);
分别输入不同长度的字符串,再看看。

2018-01-04 16:59
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:7 
请仔细看我的图,比较你的代码。
2018-01-04 17:00
qq7918640
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2017-11-26
得分:0 
2018-01-04 17:02
qq7918640
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2017-11-26
得分:0 
更改了一下代码,但是遇到了这个问题
2018-01-04 17:03



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




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

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