인프런 커뮤니티 질문&답변

WolLu님의 프로필 이미지

작성한 질문수

C 프로그래밍 - 입문부터 게임 개발까지

또 다른 파일 읽기 fscanf

반환값이 무시되었습니다

19.06.11 21:59 작성

·

647

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

나도코딩님의 프로필 이미지
나도코딩
지식공유자

2019. 06. 13. 21:56

이 코드로 실행하신 게 맞나요?

함수명이 main(void) 이 아니라 main_file(void) 로 되어 있는거 보니 예제 코드를 사용하신것 같은데, 일단 함수명은 main 으로 해주시고 맨 아래쪽에 printf( 에는 file 이 들어가면 안됩니다. printf("%s... ) 이렇게 바꿔주시구요,

확인해보니 fprintf 를 통해 생성된 파일은 기본적으로 인코딩이라는 값이 euc-kr 로 설정되는데 어쩌면 질문자분 PC 의 텍스트 파일은 utf-8 일 수 있습니다. (win10 기준 메모장에서 만들었다면 euc-kr 입니다)  서로의 인코딩이 달라서 발생할 수 있는 문제이므로, 직접 파일을 생성하지 마시고 소스코드를 통해서 파일을 만드시고 그 파일을 불러오도록 해보세요. 혹은 notepad++ 등을 통해서 인코딩을 euc-kr 로 바꾸신 다음에 파일을 만드신 후에 테스트 해보세요.

그렇게 해서도 안된다면 아래 링크를 통한 설정 변경도 시도해보실 수 있습니다.

https://m.blog.naver.com/PostView.nhn?blogId=yun4794&logNo=221084383612&proxyReferer=https%3A%2F%2Fwww.google.com%2F

감사합니다. ^^

0

WolLu님의 프로필 이미지
WolLu
질문자

2019. 06. 11. 22:43

네, 값은 정상적으로 잘 들어가는데 출력에서 문제가 생기네요 ,

 

## 코드 ##

#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

나도코딩님의 프로필 이미지
나도코딩
지식공유자

2019. 06. 11. 22:08

안녕하세요?

파일에는 값이 잘 들어가있나요?

fprintf 부분을 포함한 전체 코드를 올려주시면 도움 드리겠습니다.

감사합니다.^^

WolLu님의 프로필 이미지

작성한 질문수

질문하기