71.11 심사문제 질문드립니다
, 성 이름님이 작성#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
FILE *fp1 = fopen("words.txt", "w+");
fseek(fp1, 0, SEEK_END);
int size = ftell(fp1);
fseek(fp1, 0, SEEK_SET);
char* buffer = malloc(size + 1);
memset(buffer, 0, size + 1);
for (int i = size; i >= 0; i--)
{
fread(&buffer[i], sizeof(char), 1, fp1);
}
fwrite(buffer, strlen(buffer), 1, stdout);
fclose(fp1);
free(buffer);
return 0;
}
코드를 실행하면 아무것도 뜨지 않는데 왜이럴까요? 디버깅을 해봤는데 애초에 size값에 0만 들어가는데 왜 이러는지 잘 모르겠습니다.
그리고 파일 포인터를 학습하면서 가끔가다 visual studio에서 사진과 같은 경고문이 뜨는데 무슨 의미인지 알 수 있을까요?
Re: 71.11 심사문제 질문드립니다
, 도장_ 관리자님이 작성소스코드의 파일 확장자를 .c로 하고 있는지 확인하세요.
확장자가 .cpp이면 C++ 컴파일러를 사용합니다. 메모리 할당과 해제, 관리하는 방식이 C와 C++는 다릅니다.
포인터 사용이 잘못된 경우에 오류가 발생합니다.
w+ 모드는 쓰기이므로 파일을 읽는 데 쓸 수 없습니다.
기존 파일도 지워버리고 0바이트 파일을 생성해버립니다.
UNIT 71.2 예제를 다시 살펴보세요.