문제
외부 파일에서 텍스트를 읽는 프로그램을 작성하려고합니다 (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;
제휴하지 않습니다 StackOverflow