튜토리얼 ENCRYPT 문제 질문입니다. scanf, scanf_s 관련입니다(수정)

  • shrlck
    shrlck
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    int main(){
        int i,j,k;  //t:시행횟수값
        char input[101]={0,}; //입력값
        char **result;  //결과값
        int size;
        int t=0;
    
        scanf_s("%d", &t);
    
        result=(char **)malloc(sizeof(char*)*t);
    
        for(i=0;i<t;i++){
            scanf_s("%s", input,101);
            size=strlen(input)+1;
            if(size>=101 || size==0) continue;
            result[i]=(char *)malloc(sizeof(char)*(size));
            k=0;
            for(j=0;j<size-1;j++){
                result[i][j]=input[k];
                k+=2;
                if(k>=size-1) k=1;
            }
            result[i][size-1]='\0';
        }
        for(i=0;i<t;i++) printf("%s\n",result[i]);
        return 0;
    
    }
    
    현재 제가 작성한 코드입니다만...
    실행시 알고스팟에서만
    submission.c: In function ‘main’:

    submission.c:12:3: error: implicit declaration of function ‘scanf_s’ [-Wimplicit-function-declaration]
    scanf_s("%d", &t);
    ^
    이와 같은 에러 메시지가 뜹니다. 해당 메시지를 확인하고 암시적 선언에 대해 검색하여 확인해보았으나 이게 무슨문제인지 이해가 안되는군요.. 암시적 선언이 왜 에러가 되는지가 첫번 째 질문이고 이를 해결하기위해 어떻게 편집해줘야할지가 두번 째 질문이 되겠습니다..

    (수정 추가 부분)
    위 오류 해결을 위해 scanf scanf_s의 두가지 경우를 모두 바꿔가며 실행해보았으며 크기인자를 지정해줘야한다는 글도 보여서
    scanf_s("%d",&t,1); 로도 시도해보았습니다.
    하지만 전부다 되지 않았습니다..


    8년 전
6개의 댓글이 있습니다.
  • memorys
    memorys

    제가 아는 부분은 아니라 설명은 안되고 ㅠ
    전에 비슷한 질문을 본것같아 링크 드립니다.
    https://algospot.com/forum/read/3877/#c15526
    이쪽에서 확인 가능한 부분인지 참고해보세요


    8년 전 link
  • shrlck
    shrlck

    링크 감사합니다. 근데 사실 이미 scanf_s랑 scanf랑 전부 번갈아가면서 시도를 해봤어요...
    scanf를 쓸떄는 scanf_s를 쓰라고 비쥬얼에서 warning이 뜨고 알고스팟에서도 비슷한 내용으로 submission error가 뜹니다..


    8년 전 link
  • memorys
    memorys

    http://alisa2304.tistory.com/106
    이런 글이 있네요 크기까지 지정해주면 좋다고합니다


    8년 전 link
  • memorys
    memorys

    http://ehclub.co.kr/656
    이쪽도 자세히 설명하네요
    결국 안정성 높은 함수를 추가로 줄테니 애매하게 호출하지말고 정확하게 인자 넘겨서 써라 라고 말하는듯해요


    8년 전 link
  • shrlck
    shrlck

    정보링크 계속올려주셔서 감사합니다.
    제가 고치려고 시도했던 내역을 적었어야했는데 그걸 안적었었네요
    크기까지 지정 부분을 저도 확인해서 시도해보았었습니다.
    scanf("%d",&t,1); 이런식으로요
    하지만 잘 되지않았었습니다.. 여전히 같은 형태의 오류가 떴었던걸로 기억하네요


    8년 전 link
  • astein
    astein

    scanf_s는 microsoft-specific한 함수이기 때문에, gcc에서는 컴파일 되지 않습니다. scanf를 사용하시면 됩니다.

    https://algospot.com/forum/read/2595/


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.