풍성한 라벤더농장이 될때까지

[Conflict]

프로그래밍 실습 공부하신거 보니 C++로 하시는건가요? 거기서 매크로로 _CRT_secure 어쩌고 한 것은 어떤 값으로 하겠다는거 없이 바로 쓸 수 있나요? 제가 C쪽 계열 언어는 잘 몰라서 ㅎㅎ 

 

[Merge]

#define _CRT_SECURE_NO_WARNING

 

C언어에서 scanf, strcpy, fopen등을 사용할때 Warning C4996 Error를 방지하기 위해 코드 첫단에 넣는 문장입니다.

 

오래된 CRT 기능으로 분류되어서(새 버전에는 _s가 붙습니다) 안전상의 이유로 비주얼스튜디오 2005 이상부터는 위 함수를 사용할때 오류가 발생하는데,

오류를 무시하고 위 함수를 사용하려면 _CRT_SECURE_NO_WARNING 구문을 define 해주거나, scanf_s등의 새 버전을 사용하면 됩니다

 

(그런데 사실 저 문제는 비주얼 스튜디오에 한정된 문제라, vsc에서는 문제가 일어나지 않네요..처음 알았어요)

 

// #define _CRT_SECURE_NO_WARNINGS -> vsc에서는 이 구문이 없어도 잘 돌아갑니다
#include <stdio.h>

struct student{
    char name[10];
    int hakbun;
    int score;
};


int main(){
    FILE *fp;
    struct student s;


    fp = fopen("/Users/hamchaehyeon/Documents/score.dat", "rb");
    if(fp == NULL){
        printf("파일열기 실패");
        return 0;
    }

    while(fread (&s, sizeof(struct student), 1, fp) == 1){

        printf("%s, ", s.name);
        printf("%d, ", s.hakbun);
        printf("%d\n", s.score);
    }

    fclose(fp);


    
    return 0;
}
profile

풍성한 라벤더농장이 될때까지

@그레이라벤더

느리지만 꾸준히 굴러서 큰 바다가 되고싶은 개발 어린이