반응형

텍스트 파일에 내용이 여러 행(여러 줄)이 있을 경우에는 어떻게 해야 할까요?


위 글의 소스에서 약간의 수정만 하면 됩니다.


반복문 추가 + 구조체 배열 사용

정도 일까요?


텍스트 파일에 아래와 같은 내용이 입력 되어있습니다.


위 텍스트 파일의 내용을 불러오기 위해서는....

 #include <stdio.h>

struct member{

char name[10];

int age;

char sex[3];

char city[10];

};


int main()

{

struct member m[3];

int i;

FILE *f;

f=fopen("a.txt","r");

for(i=0;i<3;i++)

fscanf(f,"%s %d %s %s",&m[i].name,&m[i].age, &m[i].sex, &m[i].city);

fclose(f);



for(i=0;i<3;i++)

printf("%s %d %s %s\n",m[i].name,m[i].age, m[i].sex, m[i].city);


return 0;

}


추가 또는 변경된 부분은 붉은색 글씨로 변경 해 놓았습니다.


정말 간단하지요?


반대로 여러행의 데이터를. 텍스트 파일에 내보낼 때는 어떻게 해야할까요?


 #include <stdio.h>

struct member{

char name[10];

int age;

char sex[3];

char city[10];

};


int main()

{

struct member m[3];

int i;

FILE *f;

strcpy(m[0].name,"홍길동");

m[0].age=15;

strcpy(m[0].sex,"남");

strcpy(m[0].city,"광주");


strcpy(m[1].name,"김철수");

m[1].age=19;

strcpy(m[1].sex,"남");

strcpy(m[1].city,"대구");


strcpy(m[2].name,"김태희");

m[2].age=20;

strcpy(m[2].sex,"여");

strcpy(m[2].city,"경상");


    printf("구조체에 입력된 자료\n");


for(i=0;i<3;i++)

printf("%s %d %s %s\n",m[i].name,m[i].age, m[i].sex, m[i].city);



f=fopen("a.txt","w");

for(i=0;i<3;i++)

fprintf(f,"%s %d %s %s\n",m[i].name,m[i].age, m[i].sex, m[i].city);


fclose(f);


return 0;

}


문자열 입력하실 때 

m[0].name = "홍길동"... 이렇게 하시면 에러 나요~!

그래서 strcpy() 함수를 사용 해야 됩니다..

관련 글 : [Computer/Programing] - c언어 문자열(2) _ 문자열 관련 함수

주의 할 점은 그 정도이고..


파일여실때, 즉 fopen() 함수 사용 하실 때 "r"(읽기모드) 가 아닌 "w"(쓰기모드)로 해주셔야 합니다.

또한 출력이니만큼 fprintf()함수 사용은 당연하겠지요?




반응형

+ Recent posts