2013-11-27 2 views
-2

동적 배열을 연습하기 위해 C로 간단한 코드를 작성했지만 Visual Studio에서는 제대로 실행하지 않습니까? 오류를 표시하지 않고 입력을 저장하는 것으로 보이지만 인쇄하지는 않습니다. 제발. (마지막에서) scanf와에서 소비되지 않은동적 배열, Visual Studio 인쇄 - c

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 
#include <stdlib.h> 
#define SIZE 3 

int main(void){ 

    int *a = malloc(SIZE * sizeof(int)); 
    int i; 

    if (a == NULL){ 
     puts("not enough memory"); 
    } 
    else{ 
     for (i = 0; i < SIZE; i++){ 
      printf("entry %d\n", i+1); 
      scanf("%d", &a[i]); 
     } 
     printf("printing\n"); 
     for (i = 0; i < SIZE; i++){ 
      printf("%d\n", a[i]); 
     } 
      free(a); 

     puts("press any key to exit..."); 
     getchar(); 
     return 0; 
    } 
} 
+0

마지막에 입력 한 값을 인쇄하는 것을 포함하여 코드는 정상적으로 보이며 나를 위해 실행됩니다. 올바른 코드입니까? 그렇다면 어떤 Visual Studio 버전을 사용하고 있으며 어떻게 컴파일합니까? – simonc

+0

잘 작동 ... 문제 없습니다! – haccks

+0

저는 VS 2013 프로를 사용하고 있습니다. 나는 로컬 윈도우 디버거를 사용한다. 마지막 값을 입력하면 프로그램이 닫힙니다. – TinMan

답변

2

줄 바꿈은 지난 getchar가에서 소비된다. 그것은 당신이 생각한 것처럼 멈춘 상태가되지 않습니다.

예를 들면 다음과 같습니다.

변화

scanf("%d", &a[i]); 

scanf("%d%*c", &a[i]);//consumed newline every time 

또는

변화

getchar(); 

getchar();//consumed last newline for scanf 
getchar();//wait for key stroke 
+0

고마워, 널 사랑해. – TinMan