Запись двух переменных в одном и том же scanf_s - PullRequest
0 голосов
/ 24 октября 2019

Итак, я хочу написать две переменные в одном 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, включающую две переменные (myFirstName и myLastName), чтобы получилось так, как я хочу.

1 Ответ

1 голос
/ 24 октября 2019

Если ваши два ввода не будут содержать пробелов, вы можете написать так:

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

points:

  • Yon может указать несколько спецификаторов преобразования в строке формата.
  • %19s - это формататор для чтения строки "%s" с пределом сохранения не более 19 символов плюс один завершающий символ NUL.
  • При чтении строк или символов с помощью scanf_sРазмер буфера в типе unsigned необходимо указывать после каждого указателя на буферы.
  • scanf_s возвращает количество успешно прочитанных данных, поэтому следует проверить, достаточно ли данных прочитано.

ссылка:

scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l |Документы Microsoft

...