2017-02-11 50 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中輸入後,控制檯給了我一個空白行,我必須至少輸入一個charcter或一個數字,以顯示「輸入學生ID」。帶字符和字符的字符串 - C

Enter name: bob 
Enter last name: jones 




1 
Enter id: a00998877 

然後將文件輸出是這樣的:

「鮑勃jones11」

我所要的輸出是這樣的:

「鮑勃·瓊斯a00998877」

我做錯了什麼?

+2

嘗試在'scanf函數%s'後'刪除空格( 「%s」 時,最後一個);在姓氏讀的時候'。 –

+0

你應該看看[適當的C格式](// prohackr112.tk/pcf)。 –

回答

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

id是一個單個字符不需要數組。

scanf("%s", last); 

小號

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

後除去了空間變化id從字符串

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

同樣在這裏,更改爲char

+1

爲什麼%id在第三個語句中有百分號? – Rgoat

+0

%是指id的地址,而不是id的值。在使用像指針一樣的數組之前,給出第一個單元格的地址。 –

+0

當我這樣做時出現錯誤: 「%」令牌之前的預期表達式 scanf(「%s%d」,%id,&stdnum); – Rgoat

0

你爲什麼在兩個輸入在此掃描爲char line:

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

id是一個char數組,並且將能夠保存字母數字輸入。您可以刪除使用stdnum

scanf("%s", id); 

我有一個example-with-stdin-stdout