关于strcmp比较两个值得问题?输入与输出同一样的数据为什么结果不为0
做一个综合代码的练习?添加好友、增加好友友好度、删除好友、私聊的程序。结果做到2.添加好友友好度就出问题了strcmp被卡住了!求解答?#include <stdio.h>
#include <stdlib.h>
#include <string.h> // 支持字符串操作
#define MAX 7
int main()
{ int i; // 循环变量
int count=6; // 当前好友数量(未被删除的好友)
int choice; // 选择变量1到4
char tempname[7]; // 用来存放临时字符串的数组 (输入好友的名字)
char name[50]; // 使用字符串命名名字
char friendsname[MAX][20]={"陈一","黄二","张三","李四","王五","赵六"};
/*1.需要使用数组来表示好友以及好友的各项状态(属性)
(1)好友的姓名
(2)好友级别
(3)好友的友好度*/
char levelfriends[][10]={"生死之交","忘年之交","异性知己","泛泛之交","一面之交","猪朋狗友"};
//2. 朋友的级别数组
int levels[MAX]={0,1,2,3,4,5,-1};
//3. 用来存放好友的级别,每个数组元素对应每个朋友的当前等级
int friendly[MAX]={100,80,70,40,30,10,-1};
//4. 对应每个好友的友好度,自己定义
printf("\n\t\t\t 好友列表\n");
printf("===================================================================\n");
printf("姓名\t\t 级别\t\t友好度\t\n");
for(i=0;i<count;i++)
{
printf("%-15s%s\t%13d\n",friendsname[i],levelfriends[levels[i]],friendly[i]);
/* 因为levefriendsleves[]被leves[i]={3,5,3,4,1,0,-1}赋值
levefriends[MAX][10]={"生死之交","忘年之交","异性知己","泛泛之交","一面之交","猪朋狗友" //还有一个字符没有赋值}
levefreinds元素顺序为: 0 , 1 , 2 , 3 , 4 , 5
leves[]=[ 0 , 1 , 2 , 3 , 4 , 5 , -1(无效值)]
levefreinds元素的值被改变为 0 , 1 , 2 , 3 , 4 , 5 用数字代表汉子
"生死之交","忘年之交","异性知己","泛泛之交","一面之交","猪朋狗友"
*/
}
printf("===================================================================\n\n");
printf("请输入你的名字:");
scanf("%s",name);
printf("用户%s登陆成功\n",name);
printf("选择1.添加好友;\t\t(增加功能)\n");
printf("选择2.增加友好度;\t(修改状态)\n");
printf("选择3.删除好友;\t\t(删除功能)\n");
printf("选择4.单独与好友私聊;\n\n");
printf("请输入1-4的数字:");
scanf("%d",&choice);
switch(choice)
{
case 1:
// 选择1.添加好友要求
// 1.确认添加好友前,先判断数组有没有空间
// 2.添加数组元素(friendname,levefriend,leves)
if(count<MAX)//当前好友的数量小于最大好友数量
{
//执行添加好友
printf("请输入新的朋友姓名:");
scanf("%s",friendsname[count]);
//gets(friendsname[count]);
//将第count个元素初始化
levels[count]=4;
//级别初始为0
friendly[count]=10;
//友好度初始值为0
count++;
printf("\n添加成功!\n\n");
printf("返回好友列表.\n");
printf("\t\t\t 好友列表\n");
printf("===================================================================\n");
printf("姓名\t\t 级别\t\t友好度\t\n");
for(i=0;i<count;i++)
{
printf("%-15s%s\t%13d\n",friendsname[i],levelfriends[levels[i]],friendly[i]);
}
printf("===================================================================\n\n");
}
else
{
// 添加失败
printf("好友已满,添加失败!");
}
break;
case 2:
//选择2.增加友好度;
// 1.找到好友的下标
// 2.修这个好友的状态 友好度+10 级别+1 如果达到最高级就不在增加
// 3.修改其他好友的状态 友好度和级别
printf("请输入朋友的名字: ");
scanf("%s",tempname);
printf("你输入的名字为:%s\n",tempname);
(strcmp(tempname,friendsname[i])); // 附加一个测试代码
printf("strcmp=%d\n",strcmp(tempname,friendsname[i])); // 结果输出值为0
// 字符串寻找strcmp,需要引入<string.h>文件头
// <string.h>头文件函数 strcmp 比较两个字符,等于返回0,小于返回负数,大于返回正数。
for(i=0;i<count;i++)
{
if(strcmp(tempname,friendsname[i])==0)
// 如果输入的姓名与friendsname相等值为真
{
friendly[i]+=10;
levels[i] = levels[i] >= 6 ? 6 : levels[i]+1;
// 等级不能超过6
printf("输入正确!\n");
}
else
{
printf("输入错误!\n");
friendly[i]-=10;
}
printf("返回好友列表.\n");
printf("\t\t\t 好友列表\n");
printf("===================================================================\n");
printf("姓名\t\t 级别\t\t友好度\t\n");
for(i=0;i<count;i++)
{
printf("%-15s%s\t%13d\n",friendsname[i],levelfriends[levels[i]],friendly[i]);
}
printf("===================================================================\n");
}
break;
case 3:
printf("选择3.删除好友;\t\t(删除功能)\n");
break;
case 4:
printf("选择4.单独与好友私聊:\n请选择:");
break;
default:
printf("输入错误,请再选择!\n");
}
return 0;
}
程序选择1的结果没问题!选择2到strcmp这个阶段就卡住了
附加一个测试值
(strcmp(tempname,friendsname[i]));
printf("strcmp=%d\n",strcmp(tempname,friendsname[i]));
输出结果为strcmp=1,哪里出了问题?