입력받은 문자열.출력시 첫글자 깨지는 현상..
연다홍
질문 제목 : 정말 모르겟습니다이건 제가 만든 주소록 프로그램인데요 insert()함수에서 정보를 입력받아. printf_all()함수로 출력을 하면
첫글자가 깨지는 현상이 나옵니다..어떻게 된걸까요? 버퍼를 지워도 생기며..참..골때리네여..
도와주세요!!
(전체소스는 파일로 올렷습니다)질문 내용 : void insert() //insert함수~~
{
system(cls);
fflush(stdin);
file *list; //파일포인터 선언~
list=fopen(c:\\call_number_list.txt,a); //파일오픈,주소값입력
int i,cnt;
char tmp[50];
printf(\n\tinsert mode\n\n\n);
struct n_list nlist={, , ,};
printf(\tname : );
scanf(%s,&nlist.name);
fflush(stdin);
printf(\tage : );
scanf(%s,&nlist.age);
fflush(stdin);
printf(\tphone number : );
scanf(%s,&nlist.number);
fflush(stdin);
printf(\te-mail : );
scanf(%s,&nlist.email);
fflush(stdin);
//입력한 값을 임시변수 tmp에 냅다 넣음..
strcat(tmp,nlist.name);
strcat(tmp,\t);
strcat(tmp,nlist.age);
strcat(tmp,\t);
strcat(tmp,nlist.number);
strcat(tmp,\t);
strcat(tmp,nlist.email);
strcat(tmp,\n);
//입력한 문자열변수 tmp를 list에 넣음`` name \t age \t number \t email \n
fputs(tmp,list);
fclose(list); //파일닫기..
}
////////////////////////////////////////////////////////////////////////////////
void print_all() // list 전부 출력하는 함수.
{
system(cls); //깨끗이 정리부터 해주고..
file *listr,*listw;
char strlist[50];
int i;
listr=fopen(c:\\call_number_list.txt,r);
if(listr==null) //파일이 없으면 파일생성후 다시 read모드 ㅎㅎㅎㅎ
{
listw=fopen(c:\\call_number_list.txt,w);
fclose(listw);
listr=fopen(c:\\call_number_list.txt,r);
}
printf(▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩\n\n);
for(i=1; ;i++)
{
fgets(strlist,49,listr); // 엔터?키가 만날때까지 읽어드림.(49줄)
if(feof(listr)) //파일의 끝에 도달하면 브레이크/
break;
printf(%2d: %s,i,strlist); //출력
}
if(i==1){ //i가 1이면 저장된게 없다는 것이므로..
printf(\n저장된 연락처가 없습니다. \n);}
printf(▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩\n);
printf(\n\n);
fclose(listr);
//파일닫기
}
-
뿌우
일단 b_list 구조체가 어떻게 되어 있는지 궁금하네요.
scanf 함수에서는 띄어쓰기를 입력받을 수 없습니다. -
아유미
scanf()로 받아서 그런걸까요?..
name의 첫글자만 깨지고 age number 등은 잘받아집니다..