Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <locale.h>
- #define BUFFER 256
- void reverse(char*);
- void parse(char*, char*);
- void swap(char*, char*);
- void insert(char*, char*, char*);
- int main() {
- char str[] = " В харден ырднут, ырдыв в хартег,\n тярыТ в ардёв ардя вордек.\n утрыВ ердыв йортег удром,\n ардЯ в ардёв, урдыв - в урднут!";
- char separator[] = ",.!?;: ";
- setlocale(LC_CTYPE, "Russian_Russia.1251");
- puts(str);
- printf("\n");
- parse(str, separator);
- puts(str);
- getchar();
- }
- void parse(char* str, char* separator) {
- char tmp[BUFFER];
- char* token;
- char* context = NULL;
- strcpy_s(tmp, BUFFER, str);
- token = strtok_s(tmp, separator, &context);
- while (token != NULL) {
- reverse(token);
- insert(str, context, token);
- token = strtok_s(NULL, separator, &context);
- }
- }
- void reverse(char* word) {
- int beg = 0, end = strlen(word) - 1;
- if (end) do swap(&word[beg], &word[end]); while (++beg < --end);
- }
- void swap(char* a, char* b) {
- char tmp = *a;
- *a = *b;
- *b = tmp;
- }
- void insert(char* dest, char* context, char* src) {
- int beg = strlen(dest) - strlen(context) - strlen(src) - 1;
- int end = strlen(src) + beg;
- int i = 0;
- if (end) do dest[beg] = src[i++]; while (++beg < end);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement