작성
·
660
0
컴파일을 해보니 "ㅜ8都궷8都" 같은 알 수 없는 값이 출력됩니다. fscanf(file, "%s %d %d %d %d %d %d", str1, &num[0], &num[1], &num[2], &num[3], &num[4], &num[5]); 라인에 '반환값이 무시되었습니다' 라는 경고문구가 뜨네요..
답변 3
0
이 코드로 실행하신 게 맞나요?
함수명이 main(void) 이 아니라 main_file(void) 로 되어 있는거 보니 예제 코드를 사용하신것 같은데, 일단 함수명은 main 으로 해주시고 맨 아래쪽에 printf( 에는 file 이 들어가면 안됩니다. printf("%s... ) 이렇게 바꿔주시구요,
확인해보니 fprintf 를 통해 생성된 파일은 기본적으로 인코딩이라는 값이 euc-kr 로 설정되는데 어쩌면 질문자분 PC 의 텍스트 파일은 utf-8 일 수 있습니다. (win10 기준 메모장에서 만들었다면 euc-kr 입니다) 서로의 인코딩이 달라서 발생할 수 있는 문제이므로, 직접 파일을 생성하지 마시고 소스코드를 통해서 파일을 만드시고 그 파일을 불러오도록 해보세요. 혹은 notepad++ 등을 통해서 인코딩을 euc-kr 로 바꾸신 다음에 파일을 만드신 후에 테스트 해보세요.
그렇게 해서도 안된다면 아래 링크를 통한 설정 변경도 시도해보실 수 있습니다.
감사합니다. ^^
0
네, 값은 정상적으로 잘 들어가는데 출력에서 문제가 생기네요 ,
## 코드 ##
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 10000
int main_file(void)
{
// 파일 입출력
// 파일에 어떤 데이터를 저장.
// 파일에 저장된 데이터를 불러오기
// fputs, fgets 쌍 -> 문자열 저장
char line[MAX]; // char line[10000]
// 파일에 쓰기
/*FILE* file = fopen("G:\\test.txt", "wb");
if (file == NULL)
{
printf("파일 열기 실패\n");
return 1;
}
fputs("fputs 를 이용해서 글을 적어볼게요\n", file);
fputs("잘 적히는지 확인해주세요\n", file);*/
// 파일 읽기
/*FILE* file = fopen("G:\\test.txt", "rb");
if (file == NULL)
{
printf("파일 열기 실패\n");
return 1;
}
while (fgets(line, MAX, file) != NULL)
{
printf("%s", line);
}*/
// 파일을 열고 나서 닫지 않은 상태에서 어떤 프로그램에 문제가 생기면?
// 데이터 손실 발생 가능 ! 그래서 항상 파일은 닫아주는 습관을 들여주세요
//fclose(file);
// fprintf, fscanf 쌍
// printf("%d %d %s ...")
// scanf("%d %d, &num1, ...)
int num[6] = { 0,0,0,0,0,0 }; // 추첨번호
int bonus = 0; // 보너스 번호
char str1[MAX];
char str2[MAX];
// 파일에 쓰기
/*FILE* file = fopen("G:\\test2.txt", "wb");
if (file == NULL)
{
printf("파일 열기 실패\n");
return 1;
}
fprintf(file, "%s %d %d %d %d %d %d\n", "추첨번호", 1, 2, 3, 4, 5, 6);
fprintf(file, "%s %d\n", "보너스번호", 7);*/
// 파일 읽기
FILE* file = fopen("G:\\test2.txt", "rb");
if (file == NULL)
{
printf("파일 열기 실패\n");
return 1;
}
fscanf(file, "%s %d %d %d %d %d %d", str1, &num[0], &num[1], &num[2], &num[3], &num[4], &num[5]);
printf(file, "%s %d %d %d %d %d %d\n", str1, num[0], num[1], num[2], num[3], num[4], num[5]);
fscanf(file, "%s %d", str2, &bonus);
printf(file, "%s %d\n", str2, bonus);
fclose(file);
return 0;
}
0