2013-05-02 3 views
0

안녕하세요/morning/day/오후, 모두들. 나는 현재 내 코드에 약간의 문제가있다. 난 구조체의 학생 배열을 만들려고 노력하고 배열에서 다음 하나를 가리키는 방법을 알아내는 데 문제가 있습니다. 이 문제에 대한 모든 지침은 많은 점에 감사 할 것입니다.C의 구조체 배열 탐색

main.c의

int main() 
{ 

int n_students = 0; 
struct student students[1000]; 
int closebool = 0; 
int IDnum; 
int k; 
char buffer[101]; 
char *studentName_tmp; 

    do 
    { 
     scanf("%d", &operation_num); 
     switch (operation_num) 
     { 
      case 0 : 
      { 

       closebool = 1; 
       break; 

      } 
      case 1 : 
      { 
       scanf("%d %s", &IDnum, buffer); 
       studentName_tmp = (char *) malloc (strlen(buffer)+1); 
       strcpy (studentName_tmp, buffer); 
       n_students = insert(students, n_students, IDnum, studentName_tmp); 
       printf ("%d %s\n", students[n_students].ID, students[n_students].name); 
       n_students++; 

       break; 
      } 
     } 
    } while (closebool != 1); 
return 0; 
} 

이 I 볼 것으로 예상되는 입력 및 출력

int insert(struct student array[], int numberof_students, int IDnum, char *student_name) 
{ 
    array[numberof_students].ID = IDnum; 
    array[numberof_students].name = student_name; 

    return 0; 
} 

student.c (이 경우, 입력 된 입출력)를

1 123 fred, 123 fred, 1, 234 조지, 234 조지,,363,210 1 345 헨리 345 헨리

I이 참조 그러나

:

1 123 프레드 123 프레드 234 조지 123 프레드 345 헨리, (123) 프레드,

답변

0

insert는 항상 0을 반환, 아직 당신이 main에서 반환 값을 사용하고있는 방법은 당신이 새로 삽입의 인덱스를 반환 할 것으로 예상한다는 것을 의미 ed student, 즉 numberof_students입니다.

+0

아하! 고마워요! 그것은 실제로 문제를 해결했습니다. –

0

n_students ++를 증가시킬 때마다 실제로 값 1이됩니다. 성공한 insert() 이후에 n_students가이 함수에서 반환되는 값을 0 (반환 값 0)으로 반환하므로 값 지금까지는 0으로 돌아갈 때까지 증가했습니다.

는 얻을 수 있도록 밖으로 원하는 n_students는 (사이 영을하지 않고) increamented마다 얻을 것이다, 그래서 그냥 지금 당신이 n_students 가치를 수집하지 않습니다
insert(students, n_students, IDnum, studentName_tmp); 

변화

다음 확인했습니다.