#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char buffer[10], buffer2[5];
FILE *fp1 = fopen("words.txt", "r");
fseek(fp1, 7, SEEK_SET);
fread(buffer, sizeof(char), 4, fp1);
fseek(fp1, -6, SEEK_END);
fread(buffer2, sizeof(char), 2, fp1);
strcat(buffer, buffer2);
printf("%s\n", buffer);
return 0;
}
uint 71.10에 위와 같은 코드를 작성해서 제출했더니 응답 처리 중 오류 발생이라고 뜨네요. 왜 이러는 건가요?...
처리할 수 없는 오류가 발생했을 때 해당 메시지가 표시됩니다.
컴파일은 됐으나 실행했을 때 정상적인 출력 결과를 만들지 못할 때입니다. 잘못된 인덱스 범위에 접근했거나 범위를 벗어난 메모리에 접근했을 때 발생합니다.
문의하신 코드를 컴파일해서 테스트했을 때
-. Visual Studio 2017 환경에서
컴파일: OK
실행: 오류 발생, 출력 결과 없음
-. 리눅스 환경에서
컴파일: OK
실행: 결과 있으나 오류, 메모리 범위를 벗어나 잘못된 문자 출력
./71.10.q
worloruU
cat words.txt
Hello, world!
words.txt에는 "Hello, world!"가 들어 있습니다. 문의한 코드의 결과를 보면 끝에 uU가 출력되어 있습니다. words.txt에는 u 또는 U가 없습니다. 이는 잘못된 접근에 따른 결과이며 사용하는 시스템에 따라 값은 다를 수 있습니다.
macOS는 없어서 테스트하지 못했습니다.
올바른 코드를 작성해서 자신의 PC에서 테스트한 후에 제출해보세요.