伙计们,我有上面的密码
#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);
}
然后,当我打印内容插入comesFirst函数时,它将显示如下内容:
安杰洛佩隆3b安杰洛佩隆3c-1
为什么我要在结构区域单独添加条纹!?
最佳答案
一个数组中需要7个字符才能将"Angelo"
复制到它,而不是5个字符。字符串的长度是6,您需要一个额外的字符作为终止空字符。
执行以下操作时,您正在写入其他字段的内存:
strcpy((estudantes[0]).nome,"Angelo");
定义
MAX
Go比你要复制到nome
、apelido
和residencia
的字符串的最大长度要多1。关于c - 为什么当我在struct中使用strcpy时将所有内容复制到同一变量-C语言,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24376247/