학생정보 저장&출력&검색프로그램에서 텍스트파일 불러오기
징징몬
학생 정보 입력받고 출력받는 프로그램중 입력받은 데이터를 불러오는 함수입니다.
저장된 텍스트파일을 불러오는 함수인데 불러오질못하네요텍스트파일을 불러오질 못합니다.
질문 내용 :
불러오기 - 파일명은 하나로 고정하며 파일에 저장된 자료를 읽어낸다저장하기 - 파일명은 list.txt로 지정하며 입력받은 정보를 모두 이곳에 저장한다
중복파일은 먼저 저장된 목록을 불러와서 중복된 학번을 sort문으로 걸러낼것이다
처리하기 - 이 list.txt로 데이터를 추가,수정,삭제할것이며 검색과 목록출력등 이 파일에 기초해서 작동한다
#include stdio.h
#include stdlib.h
#include string.h
#define MAX_BUF 255
//--------------------------------구조체 선언
struct people{
char name[50];
char major[50];
char grade[7];
int age;
struct people *next;
};
typedef struct people PEOPLE;
PEOPLE *head = NULL;
PEOPLE *tail = NULL;
//---------------------------------------------1검색
FILE *fp1, *fp2;
/*int search()
{
PEOPLE *cur;
int s_num,s_grade,s_age;
char name[50];
cur = (PEOPLE *) malloc(sizeof(PEOPLE));
cur=head-next;
if(cur==NULL)
{
printf(자료가 없습니다.);
return 0;
}
printf(이름으로 검색[1] 학번으로 검색[2] 나이로 검색[3] : );
scanf(%d,&s_num);
while(s_num=0 || s_num3){
printf(올바른 값을 입력해 주세요.\n);
printf(이름으로 검색[1] 학번으로 검색[2] 나이로 검색[3] : );
scanf(%d,&s_num);
}
switch(s_num)
{
case 1:
printf(검색할 이름을 입력해 주세요. : );
scanf(%d,&name);
for(cur = head-next ; cur-next ; cur = cur-next)
{
if(strcmp(name,cur-name)==0)
{
printf( 사람 목록 : %s , %s , %d , %d\n,\
cur-name, \
cur-major, \
cur-grade, \
&nbnbsp; cur-age);
}
else
printf(일치하는 자료가 없습니다.\n);
}
break;
case 2:
printf(검색할 학번을 입력해 주세요. : );
scanf(%d,&s_grade);
for(cur = head-next ; cur-next ; cur = cur-next)
{
if(s_grade == cur-grade)
{
printf( 사람 목록 : %s , %s , %d , %d\n,\
cur-name, \
cur-major, \
cur-grade, \
cur-age);
}
else
printf(일치하는 자료가 없습니다.\n);
}
break;
case 3:
printf(검색할 나이를 입력해 주세요. : );
scanf(%d,&s_age);
for(cur = head-next ; cur-next ; cur = cur-next)
{
if(s_age == cur-age)
{
printf( 사람 목록 : %s , %s , %d , %d\n,\
cur-name, \
cur-major, \
cur-grade, \
cur-age);
}
else
printf(일치하는 자료가 없습니다.\n);
}
break;
default:
break;
}
return 0;
}*/
//---------------------------------------------2삽입
int insert()
{
PEOPLE *cur;
PEOPLE *tmp;
fp1 = fopen(list.txt,w);
cur=(PEOPLE *) malloc(sizeof(PEOPLE));
cur-next=NULL;
printf(이름 : );
scanf(%s,&cur-name); printf(학과 : );
scanf(%s,&cur-major); printf(학번 : );
scanf(%s,&cur-grade); printf(나이 : );
scanf(%d,&cur-age);
fwrite(fp1,&cur-name,&cur-major,&cur-grade,&cur-age);
for(tmp = head; tmp; tmp = tmp-next){
if(tmp-next == tail) {
tmp-next=cur;
cur-next=tail;
break;
}
}
fclose(fp1);
return 0;
}
//-----------------------------------------------4리스트
int print_list(){ int i=1; PEOPLE *cur; cur = (PEOPLE *) malloc(sizeof(PEOPLE)); cur-next = NULL; = NULL; printf(관리하고 있는 사람들 목록입니다()\n); for(cur = head-next ; cur-next ; cur = cur-next){ printf(#%d 이름 : %s 학과 : %s 학번 : %s 나이 : %d\n,\ i,\ cur-name, \ cur-major, \ cur-grade, \ cur-age); i++; } return 0;} //요부분에 텍스트파일 불러오는걸 자꾸실패하네요... 조언좀 부탁드립니다...
//----------------------------------- 6내용삭제
int delete_list()
{
PEOPLE *cur;
while(head != NULL)
{
cur = head;
head = head-next;
free(cur); //동적메모리 해제
}
head = (PEOPLE *) malloc(sizeof(PEOPLE)); //재선언
tail = (PEOPLE *) malloc(sizeof(PEOPLE));
head-next = tail;
tail-next = NULL;
return 0;
}
//------------------------------------
int main()
{
int input;
head = (PEOPLE *) malloc(sizeof(PEOPLE));
tail = (PEOPLE *) malloc(sizeof(PEOPLE));
head-next = tail;
tail-next = NULL;
printf([1]검색 [2]삽입 [3]수정 [4]파일내용 [5]목록 [6]목록삭제 [0]종료 : );
while(1){
scanf(%d,&input);
switch(input){
/* case 1:
search();
printf([1]검색 [2]삽입 [3]수정 [4]파일내용 [5]목록 [6]목록삭제 [0]종료 : );
break;*/
case 2:
insert();
printf([1]검색 [2]삽입 [3]수정 [4]파일내용 [5]목록 [6]목록삭제 [0]종료 : );
break;
/* case 3:
수정함수();
break;*/
case 4:
print_list();
printf([1]검색 [2]삽입 [3]수정 [4]파일내용 [5]목록 [6]목록삭제 [0]종료 : );
break;
/* case 5:
이름목록함수();
break;*/
case 6:
delete_list();
printf([1]검색 [2]삽입 [3]수정 [4]파일내용 [5]목록 [6]목록삭제 [0]종료 : );
&nbssp; break;
case 0:
printf(담에 뵈요 . \n);
return 0;
break;
default:
printf(올바른 명령을 입력해주세요.\n);
printf([1]검색 [2]삽입 [3]수정 [4]파일내용 [5]목록 [6]목록삭제 [0]종료 : );
break;
}
}
return 0;
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692424 | 2차원배열 자료입력질문이요! (1) | 똘끼 | 2025-04-22 |
2692401 | 유닉스안에서 C언어를 이용한 명함 만들기 입니다; 이해안가는 부분이있네요 | 2gether | 2025-04-22 |
2692374 | 고수님들 댓글 마니부탁해요!!! (2) | 엄지 | 2025-04-22 |
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |