在下面的代碼:爲什麼scanf函數掃描一個空值
#include <stdio.h>
int main(){
char *name;
int age;
char *gen;
printf("Your name:");
scanf("%s",name);
printf("Your age:");
scanf("%d",&age);
printf("Your gender:");
scanf("%s",gen);
printf("*****************\n");
printf("%s is a %d years old %s \n",name,age,gen);
return 0;
}
當我運行它像這樣:
Your name:tom
Your age:20
Your gender:male
*****************
tom is a 20 years old (null)
正如你所看到的,根是一個空值,爲什麼scanf
失敗閱讀進入gen但前兩個閱讀成功?
所以不是字符*名稱使用字符名稱[20]和char gen [20] – Rob 2014-09-10 12:40:33
@Rob爲什麼'name'沒有分配內存,但是'gen'沒有? – user3289218 2014-09-10 12:54:22
@ user3289218「運氣」。未定義行爲的最嚴重症狀。 – Quentin 2014-09-10 12:55:12