Post

puts

Текст

Источник https://proproprogs.ru/c_base/c_vvod-vyvod-strok-v-standartnye-potoki

Функция puts()

Эта функция определена в файле <stdio.h>

Она работает быстрее, чем функция printf()

1
2
char str[] = { 'B', 'a', 'l', 'a', 'k', 'i', 'r', 'e', 'v', '\0' };
puts( str );

Функция fgets()

char* fgets(char* buf, int max_len, FILE* stream);

1
2
char bf[ 10 ];
fgets( bf, sizeof( bf ), stdin ); // читаем данные из входного потока 

Функция fgets формирует корректную строку, то есть, автоматически добавляет символ конца строки после последнего прочитанного символа /0

Серёжа мне прислал свой код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <string.h>

int match_ab(const char a, const char b)
{
    int aa = a, bb = b;
    if('0' <= a && a <= '9')
        aa -= 255;
    if('0' <= b && b <= '9')
        bb -= 255;

    return aa < bb;
}

void sort_string(char *str, size_t max_len, int (*match)(const char, const char))
{
    for(size_t i = 0; i < max_len; ++i) {
        size_t pos = i;
        char ch_min = str[pos];
        for(size_t j = i+1; str[j] != 0; ++j) {
            if(!match(ch_min, str[j])) {
                ch_min = str[j];
                pos = j;
            }
        }
        if(pos != i) {
            char t = str[i];
            str[i] = str[pos];
            str[pos] = t;
        }
    }
}

int main(void)
{
    char str[100] = {0};
    fgets(str, sizeof(str)-1, stdin);
    char* ptr_n = strrchr(str, '\n');
    if(ptr_n != NULL)
        *ptr_n = '\0';

    sort_string(str, strlen(str), match_ab);
    puts(str);

    return 0;
}
This post is licensed under CC BY 4.0 by the author.