/**
* @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;
}