Редактировать: Проблема решена!
l Проблема не в том, что мой strcpy не работал, а вместо этого печать
l должна была быть выполнена ВНУТРИ этой функции. За пределами этого мой массив был таким же.
l (Возможно, из-за того, что strcpy работает со ссылками, но я действительно не знаю)
l Мораль - если вы хотите напечатать свои строковые массивы после strcpy , сделайте это в
l той же функции strcpy. :)
l ----------------------------------------- -------------------
Оригинальный пост:
У меня есть простой проект TypeDef Struct в C (code :: blocks) ):
typedef struct
{
char name[150];
int studentNumber, present;
} TypeStudent;
typedef struct
{
TypeStudent students[MAX_STUDENTS];
int qtdStudents;
} TypeStudentsList;
void getStudents (TypeStudent * refStudent)
{
fflush(stdin);
printf("Insert name: ");
gets(refStudent->name);
fflush(stdin);
printf("Insert student number: ");
scanf ("%d", &refStudent->studentNumber);
fflush(stdin);
printf("Insert presence number: ");
scanf("%d",&refStudent->present);
}
void NameOrder (TypeStudentList list)
{
BubbleOrder(list, MAX_STUDENTS);
printf("\n\nStudents\n");
for(i=0; i<lista.qtdStudents; i++) {
printf("%s\n",lista.alunos[i].nome);
}
}
void BubbleOrder(TypeStudentList, int n) {
int i, trades;
char aux[150];
do {
trades=0;
for(i=0; i<n-1; i++) {
if(strcmpi(list.students[i].name , lista.students[i+1].name) > 0){
strcpy(aux , list.students[i].name);
strcpy(list.students[i].name , list.students[i+1].name);
strcpy(list.students[i+1].name , aux);
trades=1;
}
}
} while (trades!=0);
}
Как вы можете видеть, мой проект начинается с пустого списка студентов, и с некоторыми «получателями» он настроит некоторых студентов, затем мне нужно будет оформить заказ по простому пузырьковому порядку.
Проблемы:
1 - Мой cmd падает, когда достигает части заказа. Я что-то неправильно настроил?
2- Правильно ли этот синтаксис? (игнорируйте i вне контекста)
strcpy(aux , list.students[i].name);
strcpy(list.students[i].name , list.students[i+1].name);
strcpy(list.students[i+1].name , aux);
3 - Как правильно установить значение list.student [0] .name ПОСЛЕ получения правильно?
-
Уже пробовал:
Печать list.students [0] .name после get работает правильно (так что я полагаю, проблема в моем синтаксисе BubbleOrder)
Любая помощь приветствуется, спасибо!