2017-05-07 4 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'という2つの変数があります。それらのうちの1つだけが非ゼロ値を有する。 – melpomene

答えて

1

ここでは複数の間違いがあります。 まず、あなたは理由(より高いレベルのプログラミング言語で)このライン の境界例外のうちを取得する必要があります:

stuId[NUMSTU] = studentId; 

stuIdNUMSTUの初期長さを持つ配列です。 のアクセス可能なスロットが0(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