텍스트 파일에 내용이 여러 행(여러 줄)이 있을 경우에는 어떻게 해야 할까요?
위 글의 소스에서 약간의 수정만 하면 됩니다.
반복문 추가 + 구조체 배열 사용
정도 일까요?
텍스트 파일에 아래와 같은 내용이 입력 되어있습니다.
위 텍스트 파일의 내용을 불러오기 위해서는....
#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()함수 사용은 당연하겠지요?
'IT > Programing' 카테고리의 다른 글
C언어 텍스트파일에서 내용을 읽어와 구조체에 담기 (8) | 2014.01.11 |
---|---|
c언어 파일에 입출력을 해보자 (4) | 2014.01.02 |
c언어 구조체를 포인터로.. (4) | 2013.12.31 |