2016-12-16 20 views
-2

以下のCプログラムではエラーは発生しませんが、どちらも動作せず、ガベージ値が与えられます。どうしてか言ってくれない?ランタイムscanf関数のガベージ値が正しく機能しない

私はCodeblockエディタを使用しています。プログラムで配列を使用しないとプログラムはうまく動作します。しかし、私はそれをよく読んで間違いを見つけませんでした。

#include<stdio.h> 

int main(){ 
    char name1[27]; 
    int maths; 
    int physics; 
    int Cs; 
    int bio; 
    int english; 
    int urdu; 
    int ps; 
    int isl; 

    printf("What is your name : "); 
    scanf(" %s",name1); 
    printf("\n\nwhat is your score in Mathematics : "); 
    scanf(" %d",&maths); 
    printf("\n\nwhat is your score in physics : "); 
    scanf(" %d",&physics); 
    printf("\n\nwhat is your score in computer science : "); 
    scanf(" %d",&Cs); 
    printf("\n\nwhat is your score in biology : "); 
    scanf(" %d",&bio); 
    printf("\n\nwhat is your score in English : "); 
    scanf(" %d",&english); 
    printf("\n\nwhat is your score in Urdu : "); 
    scanf(" %d",&urdu); 
    printf("\n\nwhat is your score in Pakistan study : "); 
    scanf(" %d",&ps); 
    printf("\n\nwhat is your score in Islamiat : "); 
    scanf(" %d",&isl); 

    printf("\n****************************************************************************************"); 
printf("\nName   Mathematics Physics Com.sc Biology English Urdu Pak-Study Islamiat"); 
    printf("\n****************************************************************************************"); 
    printf("\n%-16s%-15d%-11d%-10d%-11d%-11d%-8d%-13d%0d",name1,maths,physics,Cs,bio,english,urdu,ps,isl); 
    return (0); 
} 
+1

どのような_garbage_のは?コードは名前が26文字以下であれば綺麗に見えます。 – LPs

+1

名前を入力するときにスペースを使用できないことに注意してください。 %sはスペース文字だけをスキャンします –

+0

[scanf Skippedの可能な複製](http://stackoverflow.com/questions/14484431/scanf-getting-skipped) –

答えて

0

問題は、スペースで名前を入力している場合は、名前と姓のように手動で入力された文字列を検索し、削除するためにfgetsを使用する必要がある改行文字

#include<stdio.h> 
#include <string.h> 

int main(void) 
{ 
    char name1[27]; 
    int maths; 
    int physics; 
    int Cs; 
    int bio; 
    int english; 
    int urdu; 
    int ps; 
    int isl; 

    printf("What is your name : "); 
    fgets(name1, sizeof(name1), stdin); 
    name1[strcspn(name1, "\n")] = 0; 

    printf("\n\nwhat is your score in Mathematics : "); 
    scanf(" %d",&maths); 
    printf("\n\nwhat is your score in physics : "); 
    scanf(" %d",&physics); 
    printf("\n\nwhat is your score in computer science : "); 
    scanf(" %d",&Cs); 
    printf("\n\nwhat is your score in biology : "); 
    scanf(" %d",&bio); 
    printf("\n\nwhat is your score in English : "); 
    scanf(" %d",&english); 
    printf("\n\nwhat is your score in Urdu : "); 
    scanf(" %d",&urdu); 
    printf("\n\nwhat is your score in Pakistan study : "); 
    scanf(" %d",&ps); 
    printf("\n\nwhat is your score in Islamiat : "); 
    scanf(" %d",&isl); 

    printf("\n****************************************************************************************"); 
    printf("\nName   Mathematics Physics Com.sc Biology English Urdu Pak-Study Islamiat"); 
    printf("\n****************************************************************************************"); 
    printf("\n%-16s%-15d%-11d%-10d%-11d%-11d%-8d%-13d%0d",name1,maths,physics,Cs,bio,english,urdu,ps,isl); 
    return (0); 
} 
関連する問題