2017-05-07 1 views
0

이 배열이 인쇄되지 않는 이유에 대한 힌트를 줄 수 있습니까? 내 인쇄 기능에 어떤 문제가 있는지 알지 못합니다. 내 코드에 다른 부분을 추가하기 전에 올바르게 작동하는지 확인하고 싶습니다. 나는 배열을 올바르게 설정하지 않았다고 추측하고있다. 왜냐하면 아무것도 인쇄하지 않는 이유가 바로 &이다.사용자 입력 배열 인쇄

#define NUMSTU 50 

#include <stdio.h> 

//function prototype 
void printdata(); 

//Global variables 

int stuID[NUMSTU]; 
int stuCount; 
int totStu; 

int main() 
{ 
    int stuCount = 0; 
    int totStu = 0; 
    int studentID; 
    //Prompt user for number of student's in class 

    printf("Please enter number of student's in class:"); 
    scanf ("%d", &totStu); 

    for (stuCount = 0; stuCount <totStu; stuCount++) 
    {  
    //Prompt user for student ID number 

    printf("\n Please enter student's ID number:"); 
    scanf("%d", &studentID); 
    stuID[NUMSTU] = studentID; 

    } 

//Call Function to print data 
printdata(); 

return 0; 
}//end main 


void printdata(){ 

//This function will display collected data 
//Input: Globals stuID[NUMSTU] 
//Output: none 



//Display column headers 
printf("\n\n stuID\n"); 

//loop and display student ID numbers 
for (stuCount = 0; stuCount <totStu; stuCount++){ 
printf("%d", stuID); 
} 
} 
+2

'stuID [NUMSTU] = studentID; '는 정의되지 않은 동작을합니다. 범위를 벗어난 요소를 쓰고 있습니다. – melpomene

+1

'printf ("% d", stuID);'에는 정의되지 않은 동작이 있습니다. 'printf''% d'은'int'를 취합니다,하지만 당신은'int *'를 넘겨주고 있습니다. – melpomene

+0

'totStu'라는 두 개의 변수가 있습니다. 그 중 하나만 0이 아닌 값을가집니다. – melpomene

답변

1

여기에 실수가 두 개 있습니다. 첫째, 당신 때문에 (높은 수준의 프로그래밍 언어)이 라인 의 경계 부족 예외를 얻어야한다 :

stuId[NUMSTU] = studentId; 

stuIdNUMSTU의 초기 길이가 배열입니다. 과 (NUMSTU-1) 사이의 액세스 가능한 슬롯이 있어도 NUMSTU에 액세스하려고합니다.

stuId[stuCount] = studentId; 

및 인쇄에

, 당신은 다시 다시 배열의 위치를 ​​인쇄하고 있습니다 :

당신은 아마이 일을하고 싶었다. 대신에 :

print("%d", stuId); 

는 수행 여기

print("%d", stuId[stuCount]); 

오, 그래, 그리고 세 번째 실수 :

int stuCount = 0; 
int totStu = 0; 

stuCounttotStu이 이미 전역 변수로 선언 된 (모든 의미를 함수는 그것들에 접근 할 수있다). 당신이하고있는 일은 과 같은 이름을 가진 새로운 변수를 정의하는 것이지만 다른 함수는 접근 할 수 없습니다. 그래서 전역인지 로컬인지를 결정해야합니다. 어쨌든, 당신이 그것을 변경해야합니다

stuCount = 0; 
totStu = 0; 

는 이제 작동합니다.

+0

고마워 - 이제 작동 중입니다. –

+0

이것은 C입니다. 당신은 예외를 벗어났습니다. 예외를 얻거나 컴파일러가 결정할 수있는 것은 무엇이든 얻을 수 있습니다. –

+0

음, 그럼, 내가 편집 했어. 이제 괜찮아 지길 바래. – blahh