프로그래밍

 3198, 1/160 회원가입  로그인  
   크엉
   C언어 공부 방금 막 시작했는데 ...

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


#include <stdio.h>

int main() {
    int i, j, n;

    printf("\nPlease enter number:");
    scanf("%d", "&n");

    for(i=0;i<n;i+=1) {
        for(j=0;j<n;j+=1) {
            printf("%4d", j+1);
        }
        printf("\n");
    }
    return 0;
}

라고 메모장에 입력하고 "7.C"라고 저장한 후

gcc 7.c -o 7.c 로 실행파일을 만들고 7.c를 입력해서 실행시켜보니까

26867684206593 이라고 일렬로 숫자로 나오네요 ...
  
        책에 보면
           1 2 3
           1 2 3
           1 2 3

이렇게 나오게 어떻게 하나요... MinGW20 설치했고 환경 변수도 해뒀습니다 ㅠㅠㅠㅠㅠ

  Hit : 5113     Date : 2016/06/04 07:31



    
ysl1121 이미 해결하셨겠지만 scanf문에서 &n을 둘러싸고 있는 ""를 지워야 되지 않을까요.
, 뒤에 오는 전달인자는 입력한 값을 저장할 주소를 나타내는데 &n을 쓰면
저장공간 n의 주소가 전달되서 프로그램이 의도하신대로 작동할텐데
"&n"이면 "&n"이라는 문자열상수가 되서 &n이라는 데이터영역상에 기록된 문자열의
주소를 전달하게 되고 결과적으로 변수 n안에는 쓰레기값이 그대로 남아있을 것 같아요
(초기화를 안하셨으므로)
그런데 그 n을 이용해 루프를 돌리니까 원하시는 작동을 안하는 것 같아요.
2016/06/05  
menial ... 2018/11/21