[英]Why does printf( “%c”, 1) return smiley face instead of coded char for 1
[英]Why does this C code always output a smiley face?
#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,即
char name[15];
printf("What is your name? ");
scanf("%c",&name);
printf("Name: %s",name);
然后在輸入的第一個字符后打印一個@符號。 例如,如果輸入為“ Sam”,則輸出為“ S @”。 有什么想法為什么會這樣?
這是未定義的行為,請嘗試
scanf("%14s", name);
您將錯誤的參數傳遞給“%c”說明符,該說明符期望指向單個char
的指針。 相反,您需要使用"%s"
說明符,並且由於name
是一個數組,因此它自動是指向其第一個元素的指針,因此您不需要操作符的&
地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.