Created
September 16, 2016 09:11
-
-
Save klopp/2c5176bdd6579814fb2607dba0c5a728 to your computer and use it in GitHub Desktop.
Тестовое задание
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define _GNU_SOURCE | |
#include <stdlib.h> | |
#include <stdio.h> | |
#include <ctype.h> | |
#include <string.h> | |
/* ----------------------------------------------------------------------------- | |
* Написать функцию, которая меняет первые буквы слов на заглавные и сохраняет | |
* их в отдельную строку. | |
* | |
* Особенности реализации: | |
* | |
* 1. Память для результата выделяем динамически, она должна быть освобождена | |
* вызывающей стороной. | |
* 2. Подсчёт слов пропущен, выделяем максимально возможное количество памяти | |
* для результата. | |
---------------------------------------------------------------------------- */ | |
#define DELIMITERS " \v\f\t\n\r.,!?;{}()[]<>\"\'`" | |
/* -------------------------------------------------------------------------- */ | |
char *compress_to_upper( const char *source ) | |
{ | |
char *copy = strdup( source ); | |
char *result = malloc( strlen( source ) + 1 ); | |
char *token; | |
size_t idx; | |
if( !copy || !result ) { | |
free( result ); | |
free( copy ); | |
return NULL; | |
} | |
token = strtok( copy, DELIMITERS ); | |
for( idx = 0; token; idx++ ) { | |
result[idx] = toupper( token[0] ); | |
token = strtok( NULL, DELIMITERS ); | |
} | |
result[idx] = 0; | |
return result; | |
} | |
/* -------------------------------------------------------------------------- */ | |
int main() | |
{ | |
char *upper = compress_to_upper( "some text for example" ); | |
printf( "%s\n", upper ? upper : "[ERROR]" ); | |
free( upper ); | |
return upper == NULL; | |
} | |
/* -------------------------------------------------------------------------- */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment