2014-11-05 2 views
1

성적을 테이블 작성하는 비교적 간단한 프로그램입니다.마지막 루프 이전에 충돌이 발생합니다.

특히 마지막 중간 입력에서 마지막 루프를 완료하는 동안 내 프로그램이 충돌합니다. 도움이 필요 하신가요?

#include <stdio.h> 
#include <string.h> 
#define ARRAYSIZE 2 

int main(void) 
{ 
    char studentID[ARRAYSIZE][10]; 
    int midterm[ARRAYSIZE]; 
    int fina[ARRAYSIZE]; 
    int i=0; 
    double overall[ARRAYSIZE]; 
    for (i=0;i<ARRAYSIZE;i++) 
    { 
     printf("\nInput Student ID:"); 
     scanf("%s",&studentID[i][10]); 
     printf("\nInput midterm score:"); 
     scanf("%d",&midterm[i]); 
     printf("\nInput final score:"); 
     scanf("%d",&fina[i]); 
     overall[i]=midterm[i]*0.3+fina[i]*0.7; 
    } 
    printf("\nStudent ID MidTerm Final Overall\n"); 
    for (i=0;i<ARRAYSIZE;i++) 
    { 
     printf("%s%5d%5d%5f",studentID[i][10],midterm[i],fina[i],overall[i]); 
    } 
    return 0; 
} 

반환되는 프로세스는 -1073741819 (0xC0000005)입니다. 감사.

+0

'는 scanf ("%의 S", studentID [I] [0]);' –

+1

'의 printf ("% S %의 5D %의 5D %의 5 층"studentID [I] [ –

+0

] 개행이 발생할 때 scanf()가 중지됩니다. 형식 서술문에 각각 앞에 ''문자가없는 한. 이 공백 문자는 scanf()가 공백 (예 : 개행)을 건너 뛰게합니다. – user3629249

답변

3

오류가 최종의 printf 문에, 특히 'studentID [I] [10]'

+0

또한 형식이 printf에서' "% s"'과 일치하지 않습니다. –

+0

@Homer는 printf ("% s % 5d % 5d % 5f", studentID [i] [9], 중간 고사 [i], fina [i], overall [i])를 의미했습니다. 효과가 있을까요? –

+0

절대적으로 그렇습니다. 주로 'i'가 최대치보다 적음을 보장하기 때문입니다! – Homer

0

이 시도하십시오 (귀하의 경우 합법적 0 ~ 9) 여기가 부정한 인덱스에서 요소에 액세스 선언은

int ARRAYSIZE=2; 
char studentID[ARRAYSIZE][10]; 

그런 다음, 당신은 문자열을 배열로 입력해야 // 한 oreder에서

int i; 
for (i=0; i<ARRAYSIZE; i++) { 
    scanf ("%s" , studentID[i]); 

} // 그들에게 U를 인쇄합니다 // SE

for (i=0; i<ARRAYSIZE; i++) { 
    printf ("%s" , studentID[i]); 

}

관련 문제