2016-07-16 81 views
0

我的程序非常簡單,但它有一個我無法解決的錯誤。 下面是代碼:Scanf功能中的問題

#include <stdio.h> 
int main(int argc, const char * argv[]) { 

char name[100]; 
int age; 

printf("What's your name?\n"); 
scanf("%s", name); 

printf("Hey %s!\n",name); 

printf("How old are you?\n"); 
scanf("%d\n", &age); 

printf("You're %d years old, cool!\n", age); 


return (0); 
} 

我有一個錯誤,當我到達了scanf年齡。即使我輸入了一個數字,例如22,我也應該按回車鍵。然而,這只是一個新的路線。看來該程序無法檢測到我的整數值。

回答

1
scanf("%d\n", &age); 

應該

scanf("%d", &age); 

注意scanf("%d\n", &age)相同scanf("%d ", &age)。這要求輸入是一個整數,後跟一些空格(例如換行符)。掃描將在下一個非空白字符後停止。它基本上與scanf("%d %s", ...)相同,但沒有將字符串存儲在任何地方(我在這裏做了一些手勢)。

scanf()該手冊可以在這裏找到:http://en.cppreference.com/w/c/io/fscanf

+0

這是完美!謝謝! –

1

從scanf函數代碼中刪除\ N:

printf("How old are you?\n"); 
scanf("%d", &age);// Used to be scanf("%d\n", &age); 
+0

嗯,好的,謝謝。這有什麼理由嗎? –

+0

同時檢查'scanf'的返回值會很有用 –

+0

啊,對嗎,你能告訴我如何捕獲異常,以便它們不能插入字符串,例如hello在int的地方嗎?有這方面的文件嗎?對不起,我是C新手:) –