PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2010/03/16 22:43:28
Name 마이클스코필
Subject C언어 파일 입출력 관련해서 질문드립니다.
안녕하세요,
혼자 끙끙 대다가 도저히 안되서 질문 하나 올리겠습니다.
우선 전역 변수로
typedef struct information
{
        int infor;    
        char *name;
        char *email;
} infor;
infor pArray[100];
이 선언 되어있고  
text.txt 파일에는
kim love@naver.com
한줄이 저장되어 있다고 했을 때
제가 프로그램을 실행하자마자 text.txt 파일에 있는 두 문자열을 가져 올려고 하는데요.
load 함수 부분을 이렇게 짰는데요.
void load(infor *pt,int *index)         // 여기서 index 값은 0이 넘어 옵니다
{
        char buf[255];
        char *tok;
        FILE * fp;

        puts("파일을 오픈합니다");
        Sleep(1000);

        fp = fopen("text.txt", "rt");
        if(fp == NULL)
        {
                puts("file open error");        
                return;
        }

        puts("파일을 읽습니다.");
        Sleep(1000);

        while(fgets(buf, 255, fp) != NULL)
        {
                tok = strtok(buf, " \t");                    // 값을 차례로 읽어온다
                printf("%s\n", tok);
                strcpy(pt[*index].name, tok);
                tok = strtok(NULL, " \t");
                strcpy(pt[*index].email, tok);
                pt[*index].infor=1;
                (*index)++;
        }
}

처음 tok 값을 출력해보면 kim 으로 화면에 찍힙니다.
문제는 strcpy(pt[*index].name, tok); 이부분인데요
여기서 바로 에러가 뜨더라구요.
제가 생각한거는 tok값에 바로 pt[*index].name 구조체에 값을 복사 하게 했는데
에러가 납니다.
저 2개의 tok 값을 각각 구조체의 name 과 email에 넣는 방법을 알고 싶네요.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/03/16 23:35
수정 아이콘
typedef struct information

int infor;
char name[20];
char email[20];
infor;

이렇게 하시거나,
pt[*index].name = malloc(strlen(tok) * sizeof(char));
strcpy(pt[*index].name, tok);
하시고 나중에 free 하시면 되겠습니다.

여기서 중요한점은 char * 가 포인터만을 의미하며 실제적으로 메모리 할당은 되지 않는 다는 것입니다.
문자열을 사용할때 c에서 char*를 사용해서 헷갈려 할때가 많은데, 데이터를 저장할 '변수'는 항상 저장될 장소인 '메모리' 공간을 필요로 합니다.
이점 유의하면서 다시 생각하면 될듯합니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
76918 온게임넷 회원가입 안되는게 맞나요? [4] FrOm-HeLL1719 10/03/17 1719
76917 워크래프트2와 블리자드 기업에 대해서 질문합니다. [13] 이히리기우구1646 10/03/17 1646
76916 [급]태국여행갈때 필요한 서류(여권 등)? [9] 고양이털때문2166 10/03/17 2166
76915 하드디스크 드라이브 문자에 해당하는 하드가 뭔지 알 수 있나요? [2] 오만과나태1972 10/03/17 1972
76914 스팸문자 신고 못하나요? [1] DeadOrUndead2122 10/03/17 2122
76913 프린터 인쇄창 관련 질문입니다 [3] 마다마다다네~1819 10/03/17 1819
76912 핸드폰 구입관련 질문입니다. [9] 정지연2121 10/03/17 2121
76910 프로리그 최강의 종족라인은? [25] wish burn2161 10/03/17 2161
76909 루시드드림(자각몽) 에 대해 잘 아시는 분 있나요? [8] 반전2582 10/03/16 2582
76908 회사다니시는 분에게 MS 오피스 버전 질문 드립니다. [8] 강희최고2247 10/03/16 2247
76907 아이폰 현재 어디서 사는게 가장 저렴하고 확실할까요? 그리고 2년 사용한다고 가정한다면... [12] 래토닝2480 10/03/16 2480
76905 간단한 수학 하나 질문드려요 [5] Mraz2098 10/03/16 2098
76904 옷 구매하실때 어디를 주로 이용하시나요. [20] 율본좌2426 10/03/16 2426
76903 조두순이든 강호순이든 김길태든... [40] KnightBaran.K2367 10/03/16 2367
76901 일반화학 잘하시는분들! [2] 무제2208 10/03/16 2208
76899 차량용 주차번호판,액새서리 구입 관련 질문입니다. [1] 낼름낼름1678 10/03/16 1678
76898 숨김파일 해제가 안됩니다!!! [4] 테란의폐태자3056 10/03/16 3056
76897 밤에는 어떤 것을 먹어야 할까요? [12] Go_TheMarine2231 10/03/16 2231
76896 어셈블리어 질문이요. [5] younha1721 10/03/16 1721
76895 팥빙수 질문입니다! [2] ??1925 10/03/16 1925
76894 C언어 파일 입출력 관련해서 질문드립니다. [1] 마이클스코필4876 10/03/16 4876
76892 [건의] 피지알 사이트 바탕색을 좀 바꾸면 안될까요? [9] let8pla2110 10/03/16 2110
76891 현실 축구에서 포텐?? [5] dan161818 10/03/16 1818
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로