Ввести в одной строке фамилию, имя и отчество. Вывести, где останутся имя и фамилия - 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;
}

Объяснение кода листинга программы

  1. Подключаются необходимые библиотеки для работы с широкими символами и вводом-выводом
  2. Определяется буфер для ввода ФИО
  3. Устанавливается локальная настройка на русский язык
  4. В цикле while происходит запрос на ввод ФИО и проверка корректности введенных данных
  5. Внутри цикла определяются указатели на первое и последнее имя в строке ввода
  6. Если указатель на среднее имя не равен NULL и он не совпадает с указателем на первое имя, то выводится приветствие с использованием средним именем и первым именем
  7. Если указатель на среднее имя равен NULL или совпадает с указателем на первое имя, то выводится сообщение об ошибке ввода ФИО
  8. Цикл while завершается, когда пользователь вводит корректные данные
  9. Программа завершается с кодом EXIT_SUCCESS

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.286 из 5
Похожие ответы