2017-02-11 19 views
1
#include <stdio.h> 
#include<stdlib.h> 

int main() 
{ 
    char first[10], last[10], id[10]; 
    int stdnum; 
    FILE *fptr; 
    fptr = fopen("C:\\c\\program.txt","w"); 

    if(fptr == NULL) 
    { 
     printf("Error!"); 
     exit(1);    
    } 

    else 
    { 

     //first name 
     printf("Enter name: "); 
     scanf("%s", first); 
     fprintf(fptr,"%s ",first); 


     //last name 
     printf("Enter last name: "); 
     scanf("%s ", last); 
     fprintf(fptr,"%s", last); 


     //id 
     printf("Enter id: "); 
     scanf("%s %d", id, &stdnum); 


     fprintf(fptr,"%s\n", id); 
     fprintf(fptr,"%d\n", stdnum); 

     fclose(fptr); 

     return 0; 
    } 
} 

名前、姓、学生番号を尋ねるプログラムを作成しています。学生番号の形式は小文字で、その後に8桁です。 このコードを実行すると、姓と名を入力できます。私は最後の名前を入力し、cygwinの入力をヒットした後、コンソールは私に空白の行を与え、私は少なくともそれを表示するためにそれにcharacterまたは数字を入力する必要があります学生のIDを入力します。intとcharの文字列 - C

"ボブjones11"

私は出力がこのような何かになりたい::

"ボブ・ジョーンズa00998877"

Enter name: bob 
Enter last name: jones 




1 
Enter id: a00998877 

は、ファイル出力は次のようなものです

何が間違っていますか?

+2

'のscanf( "%sの"、最後の)における%S''の後にスペースを削除してください持っている; '姓で読み込むときに。 –

+0

[正しいC書式設定](// prohackr112.tk/pcf)を調べてください。 –

答えて

-1
char first[10], last[10], id; 

idは、配列を必要としない単一の文字です。 S

scanf(" %c%d", %id, &stdnum) 

scanf("%s", last); 

削除スペースは、なぜあなたは、この二つの入力でスキャンしている

+1

%idに3番目の文にパーセント記号があるのはなぜですか? – Rgoat

+0

%はidのアドレスであり、idの値ではありません。ポインタのように動作する配列を使用する前に、最初のセルのアドレスを返します。 –

+0

私はそれを行うとエラーが発生します: '%'トークンの前に期待される表現 scanf( "%s%d"、%id、&stdnum); – Rgoat

0

をcharに変更され、ここで

fprintf(fptr,"%c\n", id) 

同じ文字列からcharにidを変更しました行:

scanf("%s %d", id, &stdnum); 

idは、charアレイであり、英数字入力を保持することができます。 stdnumの使用を削除することができます。

scanf("%s", id); 

私はexample-with-stdin-stdout