簡體   English   中英

打印並掃描字符串c

[英]print and scan a string c

我想使用Visual Studio在C中掃描和打印字符串。

#include <stdio.h>

main() {
    char name[20];
    printf("Name: ");
    scanf_s("%s", name);
    printf("%s", name);
}

在我這樣做之后,它不打印名稱。 會是什么呢?

引用scanf_s的文檔

備注:

[...]

scanfwscanf不同, scanf_swscanf_s要求為所有包含在[] cCsS或字符串控件集的輸入參數指定緩沖區大小。 字符的緩沖區大小作為附加參數傳遞,緊跟在指向緩沖區或變量的指針之后。

所以, scanf_s

scanf_s("%s", &name);

是錯誤的,因為你沒有傳遞表示緩沖區大小的第三個參數。 此外, &name計算為char(*)[20]類型的指針,該指針與scanf_s期望值( char* )中的%s不同。

通過使用sizeof_countof使用表示緩沖區大小的第三個參數並使用name而不是&name來修復問題:

scanf_s("%s", name, sizeof(name));

要么

scanf_s("%s", name, _countof(name));

name是數組的名稱,數組的名稱“衰減”到指向其第一個元素的指針,該元素的類型為char* ,只是scanf_s預期的%s

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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