none
컴파일은 되기야 되는데 이런 메세지가자꾸 뜨네요 scanf_s를 잘못사용하고 있는건가요? RRS feed

  • 질문

  • #include<stdio.h>

    int main(void)
    {
    int arr1[10];
    int arr2[10];
    int i,j=0,k=9;
    printf("총 10개의 숫자 입력\n");

    for (i = 0; i < 10; i++)
    {
    printf("입력: ");
    scanf_s("%d", &arr1[i], sizeof(arr1[i])); //scanf("%d", &arr1[i]);  //14줄
    }

    for (i = 0; i < 10; i++)
    {
    if (arr1[i] % 2 == 1)
    while (i < 10)
    {
    arr2[j] = arr1[i];
    j++;
    break;
    }

    }


    for (i = 0; i < 10; i++)
    {
    if (arr1[i] % 2 == 0)
    while (i < 10)
    {
    arr2[k] = arr1[i];
    k--;
    break;
    }

    }

    printf("배열 요소의 출력:");
    for (i = 0; i < 10; i++)
    {
    printf("%d ", arr2[i]);

    }

    printf("\n");

    return 0;

    }

    .c(14): warning C4474: 'scanf_s' : 서식 문자열에 전달된 인수가 너무 많습니다.

    c(14): note: 자리 표시자 및 해당 매개 변수에는 variadic 인수가 1개 필요하지만 2개가 제공되었습니다.

      
    2018년 7월 3일 화요일 오후 12:23

답변

  • scanf_s 함수는 %s 와 같은 문자열 파라미터에만 버퍼 사이즈를 넘기게 되어있습니다.

    그러므로 %d 를 사용할 때에는 sizeof(arr1[i]) 필요 없이 &arr1[i] 하나만 넘기셔야 합니다.

    scanf_s("%d", &arr1[i]);

    scanf_s 함수의 자세한 용법은 MSDN 문서 참고하세요.

    https://msdn.microsoft.com/ko-kr/library/w40768et.aspx?f=255&MSPPError=-2147217396

    2018년 7월 4일 수요일 오전 1:12