C로 프로그래밍 한 것좀 도와주세요~
Addicted
명함관리 프로그램이고 이름 학부 학번 전화번호 목록이 들어갑니다.기능은 1. 새로운 사람 추가, 2. 기존 사람 삭제 3. 이름으로 정보 검색, 4.파일로 리스트 저장, 5. 파일 불러오기(namecard.txt) 6. 리스트 모두 출력 7. 종료 이렇게구요..나름대로 짰는데, 입력을 해도 인식을 못하네요T_T도대체 이유가 뭘까요...#include stdio.h
#include stdlib.h
#include string.h#define MAX_NUM 20typedef struct {
char name[10];//이름
char major[10];//전공
char id[10];//학번
char phoneNum[13];//전화번호
}Person;//정보 전부int readFile(Person person[MAX_NUM]);//파일읽기함수
int writeFile(Person person[MAX_NUM], int count);//파일입력함수
int printMenu();//메뉴 선택
void printAll(Person person[MAX_NUM], int count);//입력된 모든 정보출력
void printOne(Person person);//하나의 정보 출력
int signUpPerson(Person person[MAX_NUM], int count);//정보 입력 함수
int signOutPerson(Person person[MAX_NUM], int count);//정보 삭제 함수void main() {
Person person[MAX_NUM] = {0,};// 사람 정보
int i = 0;
int selectedMenu;// 선택된 메뉴 번호
int countPersons = 0;
int z = 0;
char serch[10];
int isSerch=0;countPersons = readFile(person);
printAll(person, countPersons);while(1) {
selectedMenu = printMenu();
if(selectedMenu == 1) {//입력
signUpPerson(person, countPersons);
countPersons++;
}
else if(selectedMenu == 2) {//삭제
if(signOutPerson(person, countPersons) == 0) {countPersons--;
printf( 삭제되었습니다.\n\n);
}
else {//만약 등록되지 않은 이름을 입력하면printf( 등록된 정보가 없습니다.\n\n);
}
}
else if(selectedMenu == 3) {//탐색
printf(\n\n----------------------------\n);
printf(조회할 이름을 입력하세요: );
scanf(%s, serch);
for(i=0;icountPersons;i++) {
if(strcmp(serch, person[i].name) ==0) {
printOne(person[i]);
isSerch = 1;
}
}
if(isSerch != 1) {//없는 이름 입력 시
printf( 해당 학생이 존재하지 않습니다.\n\n);
}
}
else if(selectedMenu == 4) {//파일에 리스트 저장
if(writeFile(person, countPersons) == 0) {
printf( 저장되었습니다.\n\n);
}
else {
printf( 저장 실패\n\n);
}
}
else if(selectedMenu == 5) {//파일 불러오기
readFile(person);
}
else if(selectedMenu == 6) {//리스트보기
printAll(person, countPersons);
}
else if(selectedMenu == 7) {//종료
printf( 종료\n);
exit(0);
}
}
}
int readFile(Person person[20]) {
FILE *fp;// 파일 포인터
int i = 0;
// 파일 읽어오기
fp = fopen(namecard.txt, r);if(fp == NULL) {
printf( File open error\n);
exit(1);
}while(!feof(fp)) {
fscanf(fp, %s %s %s %s\n,
&person[i].name, &person[i].major, &person[i].id, &person[i].phoneNum);
i++;
}fclose(fp);return i;
}int writeFile(Person person[MAX_NUM], int count) {FILE *fp;// 파일 포인터
int i = 0;
Person persons;
// 텍스트 파일로 등록된 데이터 저장
fp = fopen(output.txt, w);if(fp == NULL) {
printf( File open error\n);
return 1;
}
fprintf(fp, 이름, 학부, 학번, 전화번호\n);for(i=0; icount; i++) {
persons=person[i];
fprintf(fp, %s,%s,%s,%s,
persons.name, persons.major, persons.id, persons.phoneNum);
}fclose(fp);return 0;
}
int printMenu() {int inputNum;
//초기화면
printf(\n);
printf(=======================\n);
printf(명함관리 프로그램\n);
printf( 1. 입력\n);
printf( 2. 삭제\n);
printf( 3. 탐색\n);
printf( 4. 파일에 리스트 저장\n);
printf( 5. 파일불러오기\n);
printf( 6. 리스트보기\n);
printf( 7. 종료\n);
printf(=======================\n);
printf(\n);
printf(*기능 선택하기:);
scanf(%d,&inputNum);
fflush(stdin);return inputNum;
}
void printAll(Person person[MAX_NUM], int count) {
//등록된 모든 정보 출력
int i;printf(\n\n----------------------------\n);
for(i=0; i count; i++)
{
printf( %s\t %s\t %s\t %s\n,
person[i].name, person[i].major, person[i].id, person[i].phoneNum);
}}void printOne(Person person) {
//하나의 정보 출력
printf(\n\n----------------------------\n);
printf( %s\t %s\t %s\t %s\n,
person.name, person.major, person.id, person.phoneNum);
}int signUpPerson(Person person[MAX_NUM], int count) {
&nbbr ///신규 등록Person temp;printf(\n);
printf(이름:);
scanf(%s, &temp.name);
printf(학부:);
scanf(%s, &temp.major);
printf(학번:);
scanf(%s, &temp.id);
printf(전화번호:);
scanf(%s, &temp.phoneNum);
printf(저장되었습니다.);
count++;memcpy(&person[count], &temp,sizeof(person));return 0;
}int signOutPerson(Person person[MAX_NUM], int count) {char name[10];
int i, j;
//이름으로 조회 후 해당 정보 등록 철회하기
printf(\n\n----------------------------\n);
printf( 이름 : );
scanf(%s, &name);for(i=0; icount; i++) {if(strcmp(person[i].name, name) == 0) {for(j=i; jcount; j++) {person[j] = person[j+1];
}
return 0;
}
}
return 1;
}