C언어로 파일 입출력을 하려고 하는데 문제가 있습니다.
글쓴이: j03y14 / 작성시간: 화, 2016/05/17 - 9:18오후
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { FILE* fp; fopen_s(&fp, "C:\\Users\\jae\\Desktop\\dataset", "rt"); char * word = (char*)malloc(sizeof(char)); while (!feof(fp)) { fscanf_s(fp, "%s", word, sizeof(word)); fprintf(stdout, "%s ", word); } return 0; }
위와 같이 코드를 짰는데요 Expression: public_stream != nullptr 이런 오류가 자꾸 뜹니다.
중단점을 설정해서 디버깅 해보니 while문에 들어갈 때 문제가 생기는 듯 한데 무엇이 잘못되었나요?
Forums:
%s 가 아니라 %c 로 해보세요
%s 가 아니라 %c 로 해보세요
똑같이 나옵니다ㅠㅠ
똑같이 나옵니다ㅠㅠ
포인터의 sizeof 연산 문제
1.
파일(확장자 포함)이 실제 존재하는지 먼저 확인하시고요.
파일을 다루기 전에 파일 오픈 성공 여부를 먼저 확인하는 것이 좋습니다.
fopen_s(&fp, "C:\\Users\\jae\\Desktop\\dataset", "rt");
if (fp)
{
...
}
2.
파일 내용 출력이 목적이라면 sizeof 연산자를 잘 못 사용한 것 같네요.
sizeof(word)의 경우 할당받은 메모리 크기가 아니라 word 포인터의 크기를 반환합니다.
포인터의 크기는 보통 32bit는 4바이트, 64bit는 8바이트입니다.
의도한 것이 아니라면 malloc()로 할당한 크기인 sizeof(char)를 벗어나면 안 되겠군요.
fscanf_s(fp, "%c", word, sizeof(char));
fprintf(stdout, "%c", *word);
댓글 달기