안녕하십니까 잘생기고 멋진 프갤형들 구조체 포인터에 대해서 질문좀 할게요

일단 다음과 같은 구조체가 있습니다.


struct account{

int num;

char code;

int score;

};


그리고 메인함수 안에서

account acc;

이렇게 선언을 하고


함수의 인자로 이 구조체의 주소값을 넘겼어요

func1(&acc);


그리고 저 func1이라는 함수는

사용자한테 개수를 입력받고,

그 개수만큼 구조체에 내용들을 입력받는거에요 뭐 예를 들어 3을 입력하면

acc[0].num, acc[0].code, .............................acc[2].code, acc[2].score

이렇게 값들이 입력되겠죠?


그 다음에

func2(&acc)를 호출합니다.

이 func2이라는 함수는 저 구조체의 내용을 출력하는 함수입니다.

근데 이 때 이 함수 안에서는 입력이 완료된 구조체 배열(?)이 몇 개인지 몰라요.


그래서 저는 여기서 string을 한 글자씩 출력할 때 char 포인터를 하나씩 움직이면서 출력하다가

널문자를 만나면 출력을 끝내는(물론 string 길이를 구하는 함수가 있는건 알지만 그런것을 사용하지 않구요.)

원리를 동일하게 이용해서


func2(&acc)

{

int i=0;

while(1)

{

if(acc[i]==NULL)

break;

printf("%d %c %d ",acc[i].num,acc[i].code,acc[i].score);

i++;

}

}


이런 식의 접근 방법을 사용했거든요


아 그리고 리눅스 gcc 컴파일러를 이용해서 컴파일했습니다. 그러니까


error: no match for 'operator==' (operand types are 'const account' and 'long int') 이런 식으로 에러메시지가 시작해서

엄청 많이 나오더라구요 ㅠㅠ



음 그래서 정리를 하자면

구조체 변수를 선언할 때 구조체 배열이 아니라 하나만 선언한다음,

함수를 통해 그 구조체 포인터를 전달하고

포인터 접근을 통해서 구조체 변수들의 값을 입력한다.


그리고 다른 함수에도 구조체 포인터를 전달하고

입력된 구조체변수들을 모두 출력해야하는데

이 때 구조체 배열(?)의 크기를 모른다. 

그럼 이 출력의 끝을 어떤 조건을 통해 알아낼 수 있는가?


가 제 질문의 요지입니다.


그럼 잘생긴 프갤러 형들의 조언 기다리고 있겠습니다.