问题描述
- 一段C语言程序,为什么IF判断无法成立,请直接说代码的修改方法?
-
#include
#include
#include
#define N 2
#define M 2struct compete
{
char num[10];
char name[10];
float score[M];
float aver;
int no;
}com[N];void delinfo()
{
int i,j;
char o[10];
char m[10];
printf("请输入需要删除的选手的参赛编号n");
scanf("%s",&o);
for(i=0;i<N;i++)
{
struct compete temp;
//strcpy(temp.num,com[i].num);
strcpy(temp.num,o);
printf("取值%s",temp.num);
printf("对比值%s",com[i].num);
if(temp.num==com[i].num) //就是这里的判断 将com[i].num强转成int==o 也无法成立
{
printf("进入循环%s",o);
break;
}
}for(j=i;j<M;j++) { printf("执行语句%s",o); strcpy(com[j-1].num,com[j].num); } for(i=0;i<N;i++) com[i].no=i+1; printf("编号t姓名t得分n"); for(i=0;i<N;i++) printf("%st%st%.2fn",com[i].num,com[i].name,com[i].aver); return;
}
解决方案
用strcmp(temp.num,com[i].num)看看,用==比较的好像是地址。
解决方案二:
在C语言里面字符串是没有办法直接进行比较的。可以使用strcmp函数进行比较,单个的字符是可以进行比较的。
时间: 2024-12-01 19:19:04