在同一scanf_s中写入两个变量

问题描述 投票:0回答:1

所以我想在同一个scanf_s中写入两个变量。也许我什至没有用正确的名字来描述我想要的东西,因为我是新来的,但基本上我希望它像这样出现:

What is your last and first name: John Smith
Thank you now I know that your first name is John and your last name is Smith

我写的是这个:

#include <iostream>

int main(void)
{
    char myFirstName[20];
    char myLastName[20];

    printf("\nWhat is your first and last name: ");
    scanf_s("???")
    printf("Thank you now I know that your first name is %s", myFirstName); printf(" and your last name 
    is %s\n",myLastName);

    getchar();
    return 0;
}

而且我不知道如何编写scanf_s部分以包括两个变量(myFirstNamemyLastName),以便根据需要显示它。

c scanf
1个回答
0
投票

如果两个输入不包含空格字符,则可以这样写:

if (scanf_s("%19s%19s",
    myFirstName, (unsigned)sizeof(myFirstName),
    myLastName, (unsigned)sizeof(myLastName)) != 2) {
    puts("input failed");
    return 1;
}

要点:

  • 您可以在格式字符串中指定多个转换说明符。
  • [%19s是一种格式字符串,用于读取字符串"%s",其限制为最多保存19个字符和一个终止NUL字符。
  • [通过scanf_s读取字符串或字符时,必须在每个指向缓冲区的指针之后指定unsigned类型的缓冲区大小。
  • [scanf_s返回成功读取的数据数,因此应检查以查看是否读取了足够的数据。

参考:

scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l | Microsoft Docs

© www.soinside.com 2019 - 2024. All rights reserved.