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

没看到你输入用户名密码
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

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