while루프문에서 오류 질문
첫삥
질문 제목 :
while루프문에서 오류 질문
파일 입출력 프로그램에서 오류질문 내용 :
텍스트 파일을 입력받아바이너리 파일로출력하고
다시 바이너리 파일을 입력받아 텍스트 파일로 출력하는 프로그램을 작성하는데 오류가생깁니다
4149 apple G
231 banana d
4144 aweqweqr K
텍스트파일 내용은 이런식으로 정수 문자열 문자가 여러줄있는형태고요
아래와 같이코드를 작성했는데 프로그램을 실행해서 나온 텍스트파일을 보면
마지막 줄이 세번이나 출력이됩니다
4149 apple G
231 banana d
4144 aweqweqr K
4144 aweqweqr K
4144 aweqweqr K
아래 코드에서 빨간색으로 된 while문에서탈출을 하지않고 두번정도 더 도는것 같은데요
뭐가 문제인지 찾아주시면 감사하겠습니다
--------------------------------
--------------------------------
#include stdio.h
#include stdlib.h
#include string.h
int readTXTwriteBIN(char *, char *);
int readBINwriteTXT(char *, char *);
void main()
{
char *input_file; /* input file name */
char *binary_file; /* binary file name */
char *output_file; /* output file name */
input_file=infile.txt;
binary_file=binary.dat;
output_file=outfile.txt;
if(!readTXTwriteBIN(input_file, binary_file))
exit(1);
printf(\n\ntext file to binary file.\n);
if(!readBINwriteTXT(binary_file, output_file))
exit(1);
printf(binary file to text file.\n);
}
int readTXTwriteBIN(char *in_txt_file, char *out_bin_file)
{
int a;
char b[100];
char c;
FILE *input, *output;
input=fopen(in_txt_file,rt);
output=fopen(out_bin_file,wb);
if(input==NULL)
{
puts(Error);
return 0;
}
if(output==NULL)
{
puts(Error);
return 0;
}
while(!feof(input));
{
fscanf(input,%d %s %c, &a, &b, &c);
fwrite(&a, sizeof(a), 1, output);
fwrite(&b, sizeof(b), 1, output);
fwrite(&c, sizeof(c), 1, output);
}
fclose(input);
fclose(output);
return 1;
}
int readBINwriteTXT(char *in_bin_file, char *out_txt_file)
{
int a;
char b[100];
char c=0;
FILE *input, *output;
input=fopen(in_bin_file,rb);
output=fopen(out_txt_file,wt);
if(input==NULL)
{
puts(Error);
return 0;
}
if(output==NULL)
{
puts(Error);
return 0;
}
while(!feof(input))
{
fread(&a, sizeof(a) , 1 , input);
fread(&b, sizeof(b) , 1 , input);
fread(&c, sizeof(c) , 1 , input);
fprintf(output ,utput ,%d %s %c\n , a, b, c);
}
fclose(input);
fclose(output);
return 1;
}
--------------------------------
--------------------------------