문제

외부 파일에서 텍스트를 읽는 프로그램을 작성하려고합니다 (String String int, per line). 구조물은 주요 기능 외부에서 정의됩니다.

typedef struct Person {
  char fname[15];
  char lname[20];
  unsigned long int birth;
} clovek;

모든 라인 데이터를 덮어 쓸 수있는 것처럼 배열이되기 위해 "Clovek"가 필요하지 않습니다. 라인은 다음과 함께 버퍼에서 빨간색입니다.

fgets(buffer, 50, datafile);

그런 다음 구조물에 구문 분석하고 싶지만 문제가 발생합니다.

int i = 0;
while (buffer[i] != ' ') {
  clovek.fname[i] = buffer[i];
  i++;
}

그리고 이것은 예상 식별자 또는 '('이전 '.'토큰을 제공합니다.

또한이 코드를 디버깅에 사용하고 싶었지만 또 다른 오류도 제공합니다.

printf("fname, %s\n", clovek.fname);

오류 : 'Clovek'이전의 예상 표현

내 생각에 나는 구조물을 사용하여 완전히 오해했다는 것입니다.

도움이 되었습니까?

해결책

clovek 별명입니다 struct Person. 제거하십시오 typedef 키워드 또는 유형의 객체를 만듭니다 struct Person 코드 어딘가에. 현재 코드를 사용하면 다음을 수행 할 수 있습니다.

clovek someone;

while (buffer[ i ] ) != ' ') {
    someone.fname[ i ] = buffer[ i ];
/* .. */

다른 팁

귀하의 진술은 Clovek을 구조 담당자에게 별명으로 정의합니다.

선언에서 "typedef"를 제거하십시오. 이런 식으로 Clovek은 유형의 변수가됩니다.

또는 더 나은 변수 선언에서 별도의 구조물 선언 :

struct Person {
  char fname[15];
  char lname[20];
  unsigned long int birth;
};

struct Person clovek;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top