簡體   English   中英

為什么此C代碼總是輸出笑臉?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM