2014-11-12 4 views
0

간단한 C 프로그램 - 직원 데이터베이스 만들기 ... 내 데이터는 쉼표와 \ n으로 구분 된 .txt 파일로 저장되므로 다음과 같이 표시됩니다.파일에서 데이터로드

데이터 1, ID 1, 이름 1

데이터 2, ID2,

NAME2 무엇 (C에서,하지 C는 ++) 파일과 같은 독립 변수 저장 모든 값의 모든 데이터를로드하는 데 가장 좋은 방법입니다 (예 : p-> 데이터, p-> id, p-> 이름)?

내가 (단지 스크립트가 아닌 파일에 변수) 변수에 데이터를 저장하는 데 사용하는 코드입니다 :

void insert(emp *p,int n) 
{ 
    p=p+n; 
    printf("\nenter name of emplyee:"); 
    _flushall(); 
    gets(p->name); 
    printf("\nenter employee id:"); 
    scanf("%d",&p->empid); 
    printf("\nenter salary of the emplyee:"); 
    scanf("%d",&p->salary); 
    printf("\nenter phone no of the emplyee:"); 
    flushall(); 
    gets(p->ph); 
} 

그리고이 스크립트 파일에 데이터를 저장 :

void sejv(emp *p,int n) 
{ 
     int i; 
     FILE *fptr; 
    fptr=fopen("ulozka.txt","w+"); 
    if(fptr==NULL){ 
     printf("Error opening file!"); 
     getchar();    
    } 
    printf("Ukladani..."); 
    for(i=0;i<n;i++) 
    { 
    fprintf(fptr,"%d,%s,%d,%s\n",p->empid,p->name,p->salary,p->ph); 

    p=p+1; 
    } 

    fclose(fptr); 
    exit(0); 
} 

필요한 모든 데이터를 주 함수에로드하여 작업 할 수 있습니다.

는 편집 : 나는 내 코드의 나머지 부분을 추가 해요 는 :

typedef struct employee 
{ 
    char name[20],ph[20]; 
    int empid,salary; 
}emp; 

void main() 
{ 
    emp e; 
    emp *p; 
    int n=0,ch; 
    p=&e; 
} 

내가 만드는 데 필요한 기능에서 "뭔가"...

void nacti(emp *p,int n) 
{ 
     int i; 
     FILE *fptr; 
    fptr=fopen("ulozka.txt","r"); 
    if(fptr==NULL){ 
     printf("Error opening file!"); 
     getchar();    
    } 
printf("Nacitani..."); 

//loading function 
     p=p+n; 
    fscanf(fptr,"%d,%[^\,],%d,%s", &p->empid, p->name, &p->salary,p->ph); 
    printf("%s", p->name); 


} 

나는 기능을 필요로하는 collumns 및 행 (첫 번째 행의 데이터를 ap에 추가 한 다음 p 값을 1 씩 증가시키고 두 번째 행의 데이터를 삽입하는 루프 등)로 txt 파일의 데이터를 읽습니다.

+0

안녕하세요, 오신 것을 환영합니다! 지금까지 시도한 것에 대한 몇 가지 코드를 보여 주시면 조사에 약간의 노력을 기울 였음을 알 수 있습니다. –

+1

sejv (파일로 저장)에서 시작하여 "파일에서로드"기능을 만들 수 있습니다. 그냥 fscanf 함수를 사용하십시오. 인터넷 검색으로 너무 많은 예가 있습니다. –

+0

동일한 프로그램에 main을 쓰려면 fscanf (filepointer, "% d, % s, % d, % s", 변수)가 속임수를 쓸 것입니다. –

답변

0

확인은 광고 할 수 아래의 코드는 다음과 같습니다 ... 어떤 조언 주셔서 감사합니다 : 유래하는

struct data 
{ 
    int index; 
    int id; 
    char name[30]; 
}; 

int main() 
{ 
    struct data p[3]; 
    int i=0; 
FILE *fp = fopen("input.txt","r+"); 
while(fscanf(fp,"%d,%d,%s",&p[i].index,&p[i].id,p[i].name) != EOF) 
{ 
    i++; 
} 
i=0; 
while(i<3) 
{ 
fprintf(fp,"%d %d %s\n",p[i].index,p[i].id,p[i].name); 
i++; 
} 
fclose(fp); 
} 
+0

하지만이 코드는 파일의 첫 번째 줄만 읽습니다. 그렇지 않습니까? – efeffi19

+0

@ efeffi19 EOF까지 읽지 마십시오.실행하고 – Gopi

+0

을 참조하십시오 그리고 내 기존 스크립트에 적용하여로드 된 데이터를 내 변수 p->에 저장할 수있는 방법이 있습니까? – efeffi19

관련 문제