프로그래밍

 3198, 1/160 회원가입  로그인  
   물먹자
   c언어 질문좀요

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2866 [복사]


#include <stdio.h>
#include <string.h>

struct Employee
{
        char name[20];
        char jumin[20];
        int money;
};
int main(void)
{
        struct Employee im1,im2;
        

        
                fputs("종업원 이름:",stdout);
            scanf("%s",im1.name);
            fputs("주민번호:",stdout);
            scanf("%s",im1.jumin);
                fputs("연봉:",stdout);
                scanf("%d",&im1.money);

                fputs("종업원 이름:",stdout);
            scanf("%s",im2.name);
            fputs("주민번호:",stdout);
            scanf("%s",im2.jumin);
                fputs("연봉:",stdout);
                scanf("%d",&im2.money);

        
                printf("종업원 이름:%s \n",im1.name);
                printf("주민번호:%s \n",im1.jumin);
                printf("연봉:%d \n",im1.money);

                printf("종업원 이름:%s \n",im2.name);
                printf("주민번호:%s \n",im2.jumin);
                printf("연봉:%d \n",im2.money);
        
        
                return 0;
}


컴파일되는데 경고가 6갠가뜨네요 왜 경고가뜨는거죠??   fputs는 메모리 낭비안한다해서 printf대신에 써봣어요

  Hit : 5320     Date : 2011/01/22 10:20



    
$Zero 경고나 에러메시지는 컴파일에 따라 다르기때문에 . . 경고 메시지를 올려주셔야 원하는 답을 받을 수 있습니다. 2011/01/22  
$Zero 컴파일 -> 컴파일러 2011/01/22  
o엔요o 일단 긁어서 visual studio2010 에서 컴파일 해 본 결과
이상 없습니다.
경고 6개는 'scanf 참조' 네요.

아~무 이상 없습니다.
2011/01/22  
geniousblue 자세히는 모르지만 scanf가 취약점이 존재하는 함수로 알고 있습니다.
따라서 컴파일러는 다른 함수를 쓰라고 권고하는 것이죠.

프로그래머가 원하는 대로 입력만 한다면 아무 문제 없습니다.
(scanf("%s",im2.name); 이런 문장에서 20자가 넘어도 scanf는 받아들입니다. 여기서부터는 추측입니다만 20자 제한인 버퍼에 20자 넘게 받아들인다는 것은 버퍼 오버플로우를 야기한다는 말이 되구요. 따라서 버퍼 오버플로우 공격에 취약하기 때문에 컴파일러가 scanf를 쓰지 말고 다른 함수를 쓰라고 경고하는 것일겁니다.)

Visual Studio 2010에서도 scanf 함수를 쓰면
'This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.'
라고 나오네요.
해석하자면
'이 함수 또는 변수는 안전하지 않을 수 있습니다. scanf_s 함수를 대신 쓰십시오. 경고를 끄려면 _CRT_SECURE_NO_WARNINGS 를 사용하십시오.'
2011/01/24  
물먹자 예 scanf참조요 ㅋㅋ 그게 왜뜨나 궁금한거였는데 ㅋㅋ 감사해요 2011/01/25