파일입출력 뭐가 잘못된건지요 ㅠ
곰탱이
질문 제목 : 잘못된거..
질문 내용 :
#includestdio.h
int main()
{
char buf[10];
file * file = fopen(test.txt, w+t);
fputs(데이터입력 : , stdout);
fgets(buf, sizeof(buf), stdin);
puts(buf);
fputs(buf, file);
fgets(buf, sizeof(buf), file);
puts(buf);
fclose(file);
return 0;
}
이때 실행창에서 asdf입력시
asdf
袴袴袴袴?
이렇게 출력되고
파일에 이렇게 저장됩니다..
뭐가 잘못된거죠/??????
-
벛꽃
집에서 실험 해봤는데요. fputs(buf, file); 다음에 fseek(file,0,seek_set); 이렇게 하니깐 잘 되네요 그리고 수다님이 하신거처럼 rewind함수 써도 되네요.
-
대나무
흠.. 그럴수도 있을꺼 같네요.. 혹시 정확히 아시는분 없나요...
-
환히찬
혹시 위치지시자 때문에 아닐까요? 처음에 fputs(buf,file) 하면 test.txt에 ASDF 입력되고 위치지시자 이동 하고 나서 fgets로 test에서 부터 buf에다 입력 받아야하잖아요 근데 위치지시자가 이동 한 위치에서 부터 아무 글 자도 없으니.. 이 상한 값이 나온 거 같은데 ..
아닐 수도 있고요 ..(초보자임) -
베네딕트
파일접근 모드를 w+t로 둬서 입출력 모두 가능하기에 그대로 썻는데 이게 문제인듯 하네요..
입력과 출력시 각각 wt와 rt로 나눠서 하니 문제없이 되네요.. -
하루키
저기 ; 두 경우 모두 똑같은 결과가 나오는데요 ㅠㅠ
-
갤3
\trewind(file);
\tfgets(buf, sizeof(buf), file); -
눈꽃
buf를 초기화 해보세요
memset(buf, 0x00, sizeof(buf));