C ++ версия вашей программы:
#include <iostream>
using namespace std;
int main()
{
string first, last;
cerr << "Please type in your First Name: ";
if (! (cin >> firs))
return -1;
cerr << "Please type in your Last Name: ";
if (! (cin >> last))
return -1;
cout << last << ' ' << first << endl;
return 0;
}
Компиляция и выполнение:
pi@raspberrypi:/tmp $ g++ -pedantic -Wextra i.cc
pi@raspberrypi:/tmp $ ./a.out
Please type in your First Name: aze
Please type in your Last Name: qsd
qsd aze
pi@raspberrypi:/tmp $
Я проверяю, были ли введены имена (без EOF), я использую cerr чтобы обязательно сбрасывать сообщения без записи endl
И версия C:
#include <stdio.h>
int main()
{
char first[30], last[30];
fprintf(stderr, "Please type in your First Name: ");
if (scanf("%29s", first) != 1)
return -1;
fprintf(stderr, "Please type in your Last Name: ");
if (scanf("%29s", last) != 1)
return -1;
printf("%s %s\n", last, first);
return 0;
}
Компиляция и выполнение:
pi@raspberrypi:/tmp $ gcc -pedantic -Wextra i.c
pi@raspberrypi:/tmp $ ./a.out
Please type in your First Name: aze
Please type in your Last Name: qsd
qsd aze
Я ограничиваю размер в scanf , чтобы не записывать из массивов, я проверяю scanf удалось прочитать имена, я также использую stderr дляобязательно сбросьте сообщение без записи '\ n'
first и last являются массивом, бесполезно использовать '&' в scanf, чтобы дать их адрес
Обратите внимание, что эти версии не позволяют вводить составные имена, используя пробелы, чтобы разрешить чтение всей строки