c언어 fread 질문
-
게시물 수정 , 삭제는 로그인 필요
fread를 이용해 문자열을 입력받아서 출력하려고 하는데 자꾸 이상하게 나옵니다.
#include<stdio.h>
int main()
{
FILE * ms;
fopen_s(&ms, "C://test//mystory.txt", "rt");
char str[20];
int en;
if(ms==NULL)
{
puts("파일 오픈 실패!");
return -1;
}
while (1)
{
en = fread((void*)str, 1, sizeof(str), ms);
if (en < sizeof(str))
{
if (feof(ms) != 0)
{
fread((void*)str, 1, en, ms);
printf("%s", str);
puts("전부출력!");
break;
}
else
{
puts("실패!");
break;
}
}
printf("%s", str);
}
fclose(ms);
return 0;
위와 같이 하니
![](https://img-api.cboard.net/img_n.php?image_url=https://kin-phinf.pstatic.net/20170719_23/1500474234917aFTer_JPEG/%C1%A6%B8%F1_%BE%F8%C0%BD.jpg)
이렇게 나왔는데 중간에 한자같은게 안나오게 하려면 어떻게 해야하나요?
왜 한자같은게 나오는지 이유는 재생각에는
한글은 1byte로 나타낼수 없어서 str을 20 중에 18까지 사용이 되었는데 1byte가 남은 상황에서(마지막은 NULL이므로) 다음에 한글이 올 경우에 저렇게 나오는 걸로 알고있습니다.
그래서 제가 fread((void*)str, 2, sizeof(str), ms)로 바꾸니 아에 완전히 실행되지 않고 while문이 한번 반복되고 2번째로 fread문을 만날 때에 오류가 생겨 팅기더군요.
1. fread문에서 fread(1번칸,2번칸,3번칸,4번칸) 2번칸에는 무조건 1만 적어야 하나요? 다른숫자를 적어도 된다면 적어도 되는 경우좀 알려주세요 ㅜㅜ
2. 만약 fread문을 사용하여 위의 내용을 나타낼 수 있다면 어떻게 해야 하나요?
(fgets를 사용해서 하는 법은 알고있지만 fread문을 써서 해보고싶네요)
fread를 이용해 문자열을 입력받아서 출력하려고 하는데 자꾸 이상하게 나옵니다.
#include<stdio.h>
int main()
{
FILE * ms;
fopen_s(&ms, "C://test//mystory.txt", "rt");
char str[20];
int en;
if(ms==NULL)
{
puts("파일 오픈 실패!");
return -1;
}
while (1)
{
en = fread((void*)str, 1, sizeof(str), ms);
if (en < sizeof(str))
{
if (feof(ms) != 0)
{
fread((void*)str, 1, en, ms);
printf("%s", str);
puts("전부출력!");
break;
}
else
{
puts("실패!");
break;
}
}
printf("%s", str);
}
fclose(ms);
return 0;
위와 같이 하니
이렇게 나왔는데 중간에 한자같은게 안나오게 하려면 어떻게 해야하나요?
왜 한자같은게 나오는지 이유는 재생각에는
한글은 1byte로 나타낼수 없어서 str을 20 중에 18까지 사용이 되었는데 1byte가 남은 상황에서(마지막은 NULL이므로) 다음에 한글이 올 경우에 저렇게 나오는 걸로 알고있습니다.
그래서 제가 fread((void*)str, 2, sizeof(str), ms)로 바꾸니 아에 완전히 실행되지 않고 while문이 한번 반복되고 2번째로 fread문을 만날 때에 오류가 생겨 팅기더군요.
1. fread문에서 fread(1번칸,2번칸,3번칸,4번칸) 2번칸에는 무조건 1만 적어야 하나요? 다른숫자를 적어도 된다면 적어도 되는 경우좀 알려주세요 ㅜㅜ
2. 만약 fread문을 사용하여 위의 내용을 나타낼 수 있다면 어떻게 해야 하나요?
(fgets를 사용해서 하는 법은 알고있지만 fread문을 써서 해보고싶네요)
#c언어 fread #c언어 fread fwrite #c언어 fread 파일 읽기 #c언어 fopen fread