Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2018, 18:08   #31
Sinli
Пользователь
 
Регистрация: 10.09.2018
Сообщений: 43
По умолчанию

А как это менять на месте и почему мне не нужен дополнительный массив?
Если char str[6] = "123456" я не могу написать
Код:
for (int i = 0; i < 6; i++)
         str[i] = str[5 - i];
У меня получится char str[6] = "654456", ведь когда i дойдет до 3, первые три элемента уже будут переписаны.
Получается временный массив мне просто необходим для хранения первоначальной строки.
Sinli вне форума Ответить с цитированием
Старый 11.10.2018, 19:03   #32
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А если менять через переменную в один символ?
p51x вне форума Ответить с цитированием
Старый 11.10.2018, 19:39   #33
Sinli
Пользователь
 
Регистрация: 10.09.2018
Сообщений: 43
По умолчанию

Если можно использовать переменную в один символ, то можно этот способ.
Надо признать, менее громоздко.
Код:
void reverse_order (char * st)
{
        char ch;
        int n = strlen(st);
        int k = n - 1;
        for (int i = 0; i < (int) n / 2; i++)
        {
                ch = st[k - i];
                st[k - i] = st[i];
                st[i] = ch;
        }
        return;
}
На месте, это так?
Sinli вне форума Ответить с цитированием
Старый 11.10.2018, 19:46   #34
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ретурн не надо писать для воида. И инт деленное на инт итак инт.
p51x вне форума Ответить с цитированием
Старый 11.10.2018, 19:57   #35
Sinli
Пользователь
 
Регистрация: 10.09.2018
Сообщений: 43
По умолчанию

Хорошо, окончательный вариант вот
Код:
#include <stdio.h>
#include <string.h>
void reverse_order(char * st);
char * s_gets(char * st, int n);
int main(void)
{
        char string[81];
        puts("Введите строку:");
        s_gets(string, 80);
        printf("Ваша строка: %s - имеет %zd символов.\n", string, strlen(string));
        reverse_order(string);
        if (string[0] != '\0')
        {
                printf("Кручу, верчу, запутать хочу: %s\n", string);
                puts("Спасибо за внимание");
        }
        else
                printf("Программа завершена\n");
        return 0;
}
void reverse_order (char * st)
{
        char ch;
        int n = strlen(st);
        int k = n - 1;
        for (int i = 0; i < n / 2; i++)
        {
                ch = st[k - i];
                st[k - i] = st[i];
                st[i] = ch;
        }
}
char * s_gets(char * st, int n)
{
        char * ret_val;
        int i = 0;
        ret_val = fgets(st, n, stdin);
        if (ret_val)
        {
                while(st[i] != '\n' && st[i] != '\0')
                        i++;
                if(st[i] == '\n')
                        st[i] = '\0';
                else
                        while (getchar() != '\n')
                                continue;
        }
        return ret_val;
}
Насчет return для void.
Его именно не надо, или он не приветствуется в коде? Или смысла в нем нет?
Sinli вне форума Ответить с цитированием
Старый 11.10.2018, 20:30   #36
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы можете сделать return в void функции, например, чтобы выйти по условию раньше конца функции. Но ставить его в конце функции с одной стороны ничего не добавит, а с другой у некоторых читающих код глаз может зацепиться и они начнут думать, а не забыли ли что-то вернуть и т.д.
p51x вне форума Ответить с цитированием
Старый 11.10.2018, 20:51   #37
Sinli
Пользователь
 
Регистрация: 10.09.2018
Сообщений: 43
По умолчанию

Хорошо, большое спасибо за терпение))
Sinli вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с указателями. Sinli Общие вопросы C/C++ 2 04.10.2018 22:47
Помогите пожалуйста разобраться с указателями? седьмой Общие вопросы C/C++ 20 18.04.2017 07:26
помогите разобраться с указателями С++ sasha_14-88 Общие вопросы C/C++ 1 07.12.2014 10:39
Помогите разобраться с указателями igole Общие вопросы C/C++ 1 28.04.2013 16:47
Товарищи, помогите разобраться с указателями scibern Общие вопросы C/C++ 7 11.01.2009 12:28