편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2021.12.17

    c++ 왕초보 scanf_s C6066, C6273, C6328 오류 질문


    정확하지 않은 제목 죄송합니다. 주제를 뭐라고 해야 할지 모르겠어서..

    #include <iostream>
    using namespace std;
    int main() {
        cout << " 입력한 '두' 어절을 그대로 복사합니다. 두 어절만 쓰세요. \n"<< endl;
        char a1[1000] = { 0 };
        char a2[1000] = { 0 };
        cin >> a1 >> a2;
        cout << a1 << " " << a2 << endl;
    }
    
    

    이렇게 visual studio에 입력하면 아무 오류 또는 경고 없이 잘 실행이 됩니다.

    그런데

    #include <stdio.h>
    
    int main() {
    
        printf("입력한 '두' 어절을 그대로 복사합니다. 두 어절만 쓰세요.\n");
        char a1[1000] = { 0 };
        char a2[1000] = { 0 };
        scanf_s("%s %s",a1,a2,sizeof(a1),sizeof(a2));
        printf("\n%s %s", a1, a2);
    
    }
    

    이렇게 입력하면

    C6066 : 포인터가 아닌 항목이 _Param_(4)로 전달되었습니다.
    C6273 : 정수가 아닌 항목이 _Param_(3)으로 전달되었습니다.
    

    이미지

    C6328 : 크기 불일치: 'unsigned __int64'이(가) _Param_(5)으로 전달되었습니다.
    

    이미지

    이렇게 경고는 많이 뜨지만 오류없이 실행은 잘 됩니다.

    같은 입력인데 하나는 정상이고 하나는 많이 경고나는 이유가 무엇인지 궁굼하여 질문드립니다

  • 프로필 koladuckhu님의 편집
    날짜2021.12.06

    c++ 왕초보 질문드립니다.


    정확하지 않은 제목 죄송합니다. 주제를 뭐라고 해야 할지 모르겠어서..

    #include <iostream>
    using namespace std;
    int main() {
        cout << " 입력한 '두' 어절을 그대로 복사합니다. 두 어절만 쓰세요. \n"<< endl;
        char a1[1000] = { 0 };
        char a2[1000] = { 0 };
        cin >> a1 >> a2;
        cout << a1 << " " << a2 << endl;
    
    

    이렇게 visual studio에 입력하면 아무 오류 또는 경고 없이 잘 실행이 됩니다.

    그런데

    #include <stdio.h>
    
    int main() {
    
        printf("입력한 '두' 어절을 그대로 복사합니다. 두 어절만 쓰세요.\n");
        char a1[1000] = { 0 };
        char a2[1000] = { 0 };
        scanf_s("%s %s",a1,a2,sizeof(a1),sizeof(a2));
        printf("\n%s %s", a1, a2);
    
    }
    

    이렇게 입력하면

    이미지

    이미지

    이렇게 경고는 많이 뜨지만 오류없이 실행은 잘 됩니다.

    같은 입력인데 하나는 정상이고 하나는 많이 경고나는 이유가 무엇인지 궁굼하여 질문드립니다