#include <stdio.h>
#include <stdlib.h>
//A simple program that asks for the user's name and prints it back out.
int main()
{
char name[15];
printf("What is your name? ");
scanf("%c",&name);
printf("Name: %c",name);
}
無論輸入是什麼,笑臉總是輸出。我意識到,如果我將%c更改爲%s,程序將運行得很好,但是我想知道的是,爲什麼呢,出於所有的原因,笑臉是輸出。 另外,如果第二%C被替換爲%S即爲什麼這個C代碼總是輸出笑臉?
char name[15];
printf("What is your name? ");
scanf("%c",&name);
printf("Name: %s",name);
然後@符號被輸入的第一字符之後打印。例如,如果輸入是「Sam」,那麼輸出將是「S @」。任何想法爲什麼發生這種情況?
它並不總是輸出。我不認爲它確實如此。 –
可能是因爲「name」的內存地址的低位字節恰好是系統上笑臉的字符值。純粹巧合。 –
總是,*總是*檢查任何'scanf'系列功能的返回,尤其是在進行用戶輸入時。 –