qq_26722071
2019-10-11 21:39
采纳率: 62.5%
浏览 640

strcmp返回值不对!!!!!!!!!!!!!!!

图片说明

#include<stdio.h>
#include <string.h>

void main(){
    char name[16] , pwd[16];
    int a , b;
    printf("请输入用户名:");
    fgets(name,sizeof(name),stdin);
    printf("请输入密码:");
    fgets(pwd,sizeof(pwd),stdin);
    printf("%s\n%s" ,&name , &pwd);
    a = strcmp(name,"abc");
    b = strcmp(pwd,"123456");
    printf("%d\n",&a);
    printf("%d",&b);
    if(strcmp(name,"abc") == 0 && strcmp(pwd,"123456") == 0){
        printf("---交换机管理系统---\n");
        printf("1.登录\n");
        printf("2.创建帐号\n");
        printf("3.退出\n");
    }else{
        printf("\n用户名或者密码不正确!\n");
    }

}




得到的不是0或者1 或者-1

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • threenewbee 2019-10-11 23:04
    已采纳

    没看到你输入用户名密码
    fgets(name,sizeof(name),stdin);
    fgets(pwd,sizeof(pwd),stdin);
    换成
    scanf("%s", name);
    scanf("%s", pwd);
    printf("%s\n", name);
    printf("%s\n", pwd);
    输出下,是不是abc和123456

    已采纳该答案
    打赏 评论
  • JonathanYan 2019-10-11 22:54

    print的时候不用加&,只有scanf的时候要加,加&的意思是取地址,你输出的两个数是两个int值得地址,代码运行没有任何问题。
    而且,这种基础到不能再基础的东西上你们初学者是搞不出大新闻的,出了错就自己好好检查检查,不会引出什么天大的漏洞。
    另外你到底是输入了什么,怎么中间空了3行还都是空的。

    打赏 评论

相关推荐 更多相似问题