Ввести в одной строке фамилию, имя и отчество. Вывести, где останутся имя и фамилия - C (СИ)
Формулировка задачи:
Пример:
Введите ФИО:
Пупкин Василий Иванович
Результат:
Привет, Василий Пупкин!
Думаю, надо введеные в одну строку ФИО разбить на отдельные слова и каждое отдельное слово положить в отдельный массив, а затем скопировать к массиву с "Привет," только имя и фамилию. Не знаю как разбить на слова и занести каждое отдельное слово в отдельный массив. Помогите, пожалуйста
Решение задачи: «Ввести в одной строке фамилию, имя и отчество. Вывести, где останутся имя и фамилия»
textual
Листинг программы
#include <locale.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <wchar.h> int main() { wchar_t fio[BUFSIZ]; setlocale(LC_ALL, "ru_RU.utf8"); while (wprintf(L"Введите ФИО через пробел: ") && fgetws(fio, BUFSIZ, stdin) && *fio != L'\n') { wchar_t* middle_name = wcsrchr(fio, L' '); wchar_t* first_name = wcschr(fio, L' '); if (middle_name != NULL && middle_name != first_name) { wprintf( L"Привет, %.*ls %.*ls\n", (int)(middle_name - first_name) - 1, first_name + 1, (int)(first_name - fio), fio); } else { wprintf(L"Вы не верно ввели ФИО\n"); } } return EXIT_SUCCESS; }
Объяснение кода листинга программы
- Подключаются необходимые библиотеки для работы с широкими символами и вводом-выводом
- Определяется буфер для ввода ФИО
- Устанавливается локальная настройка на русский язык
- В цикле while происходит запрос на ввод ФИО и проверка корректности введенных данных
- Внутри цикла определяются указатели на первое и последнее имя в строке ввода
- Если указатель на среднее имя не равен NULL и он не совпадает с указателем на первое имя, то выводится приветствие с использованием средним именем и первым именем
- Если указатель на среднее имя равен NULL или совпадает с указателем на первое имя, то выводится сообщение об ошибке ввода ФИО
- Цикл while завершается, когда пользователь вводит корректные данные
- Программа завершается с кодом EXIT_SUCCESS
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д