看看伙计们,我有上面的代码
#include <stdio.h>
#include <string.h>
#define MAX 5
typedef struct Estudante{
char nome[MAX];
char apelido[MAX];
char residencia[MAX];
int telefone;
}TEstudante;
int equalEnty(TEstudante *estudante_1,TEstudante *estudante_2);
int comesFirst(TEstudante *estudante_1,TEstudante *estudante_2);
int main(){
TEstudante estudantes[2];
strcpy((estudantes[0]).nome,"Angelo");
strcpy(estudantes[0].apelido,"Pelon");
strcpy(estudantes[0].residencia,"3B");
estudantes[0].telefone = 33813001;
strcpy(estudantes[1].nome,"Angelo");
strcpy(estudantes[1].apelido,"Pelon");
strcpy(estudantes[1].residencia,"3C");
estudantes[1].telefone = 33813001;
printf("%d",comesFirst(&(estudantes[0]),&estudantes[1]));
return 0;
}
int equalEnty(TEstudante *estudante_1,TEstudante *estudante_2){
if(strcmp((*estudante_1).nome,(*estudante_2).nome)!=0)
return 0;
if(strcmp((*estudante_1).apelido,(*estudante_2).apelido)!=0)
return 0;
if(strcmp((*estudante_1).residencia,(*estudante_2).residencia)!=0)
return 0;
if((*estudante_1).telefone != (*estudante_2).telefone)
return 0;
return 1;
}
int comesFirst(TEstudante *estudante_1,TEstudante *estudante_2){
printf("%s %s",(*estudante_1).nome,(*estudante_2).nome);
return strcmp((*estudante_1).nome,(*estudante_2).nome);
}
然后当我打印出来的内容时,getFirst函数会显示出类似的内容:
AngeloPelon3B AngeloPelon3C-1
为什么我将strins添加到结构区域??
答案 0 :(得分:0)
数组中需要7个字符才能将"Angelo"
复制到其中,而不是5个。字符串的长度为6,您需要一个额外的字符来终止空字符。
执行时,您正在写其他字段的内存:
strcpy((estudantes[0]).nome,"Angelo");
定义MAX
比您要复制到nome
,apelido
和residencia
的字符串的最大长度多1倍。