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);
댓글 달기