Quick actions

cmd+k|ctrl+k

Navigation

Languages

Lab6.4

Snippet info

Language

C

Visibility

public

Author

y.s.tkachenko

Created

2023-05-08T18:51:54.846909Z

Updated

2023-05-08T19:08:17.269361Z

/**
* @file lab6.4.cpp
*@author Ткаченко Є.С., гр. 515і
*@date 07 травня 2023
*@brief Лабораторна робота № 6, варіант 7
*
* Завдання 4. Рядки. Параметри командного рядка
.
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int process_name(char *name);

int main(int argc, char *argv[]) {
    if (argc > 1 && (strcmp(argv[1], "/?") == 0 || strcmp(argv[1], "-?") == 0)) {
        printf("Переставляє вхідне ім'я з формату 'ім'я прізвище' на 'прізвище, ім'я'.\n");
        printf("Якщо ім'я не вказане в якості аргументу командного рядка, програма запросить його у користувача.\n");
        return 0;
    }

    char input_name[100];
    char *name;

    if (argc > 1) {
        name = argv[1];
    } else {
        fgets(input_name, 100, stdin);
        name = input_name;
    }

    char *newline_ptr = strchr(name, '\n');
    if (newline_ptr != NULL) {
        *newline_ptr = '\0';
    }

    int result = process_name(name);
printf("+----------------------+----------------------+----------------------+\n");
    printf("| Input                | Output               | Return Value         |\n");
    printf("+----------------------+----------------------+----------------------+\n");
    printf("| %-20s | %-20s | %d                    |\n", name, name, result);
    printf("+----------------------+----------------------+----------------------+\n");

    return 0;
}

int process_name(char *name) {
    char *first_name;
    char *last_name;

    char *last_space_ptr = strrchr(name, ' ');

    if (last_space_ptr == NULL) {
        return 0;
    }

    *last_space_ptr = '\0';
    last_name = last_space_ptr + 1;
    first_name = name;

    char *processed_name = (char *) malloc(strlen(last_name) + strlen(first_name) + 3);
    sprintf(processed_name, "%s, %s", last_name, first_name);

    strcpy(name, processed_name);

    free(processed_name);

    return 1;
}


INFO