8 / 8 / 5
Регистрация: 07.03.2012
Сообщений: 57
1

Перевернуть строку. В чем проблема?

22.04.2012, 20:58. Показов 3102. Ответов 8
Метки нет (Все метки)

C++
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
#include <iostream>
 
using namespace std;
 
void swapstr(char* str)
{
 
    for(int i=0; i<strlen(str)/2-1;i++)
    {
        char c=str[i];
        str[i]=str[strlen(str)-i-1];
        str[strlen(str)-i-1]=c;
        
 
    }
}
 
int main()
{
    char* str="My string";
    cout<<"Old string:"<<str<<endl;
    swapstr(str);
    cout<<"New string:"<<str<<endl;
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2012, 20:58
Ответы с готовыми решениями:

Перевернуть строку, в чем ошибка?
Выполните переворот строки, написав её наоборот. #include &lt;iostream&gt; #include &lt;string&gt; using...

Перевернуть строку
всем привет! помогите, плиз: Введённую с клавиатуры строку А записать в обратном порядке в...

Перевернуть строку
Написал программу которая переворачивает строку #include&lt;iostream&gt; #include&lt;cstring&gt; using...

Перевернуть строку
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { setlocale(LC_ALL,...

8
Модератор
Эксперт функциональных языков программированияЭксперт Python
33101 / 18446 / 3880
Регистрация: 12.02.2012
Сообщений: 31,008
Записей в блоге: 12
22.04.2012, 21:07 2
Объявить строку нужно вот так:

C++
1
2
    char str[100];
    strcpy(str,"My string");
А ты пытаешься изменить строковую константу.
1
3771 / 3088 / 855
Регистрация: 25.03.2012
Сообщений: 11,424
Записей в блоге: 1
22.04.2012, 21:11 3
Под строку не выделена память. У тебя это не массив символов, а лишь указатель на начало.
Правильнее так
C++
1
char str[]="My string";
1
8 / 8 / 5
Регистрация: 07.03.2012
Сообщений: 57
22.04.2012, 21:15  [ТС] 4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Под строку не выделена память. У тебя это не массив символов, а лишь указатель на начало.
Правильнее так
C++
1
char str[]="My string";
... Спасибо большое за коментарий!
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
33101 / 18446 / 3880
Регистрация: 12.02.2012
Сообщений: 31,008
Записей в блоге: 12
22.04.2012, 21:19 5
Не выделена память? А почему же тогда код:

C++
1
2
    char* str="My string";
    cout<<"Old string:"<<str<<endl;
нормально печатает строку и нормально завершается?
1
8 / 8 / 5
Регистрация: 07.03.2012
Сообщений: 57
22.04.2012, 21:21  [ТС] 6
А в чем тогда проблема? Хотел бы вникнуть в суть...
0
Заблокирован
22.04.2012, 21:28 7
Catstail, ну что значит не выделена? всё прекрасно выделено, иначе откуда появится выходная информация. Дело в том что объявление
C
1
char *
эквивалентно, точнее неявно транслируется компиляторами в
C
1
const char*
Читаем reference - "string literal"
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
33101 / 18446 / 3880
Регистрация: 12.02.2012
Сообщений: 31,008
Записей в блоге: 12
22.04.2012, 21:30 8
Так о чем я и говорю... Я примерно это и написал в первом посте.
0
Заблокирован
22.04.2012, 21:33 9
http://www.cplusplus.com/faq/s... -pointers/
C
1
2
char* greeting     = NULL;            /* 'greeting' does not point to anything */
char* salutation   = "Hello world!";  /* 'salutation' addresses immutable memory */
Цитата Сообщение от www.cplusplus.com
The last example highlights one of the tricky things about C: whether or not you declare salutation to be a pointer to const data (which you should, by the way), the memory it addresses is something that you are forbidden to modify – that is, it is immutable. Bad things can happen if you try! Honest!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2012, 21:33
Помогаю со студенческими работами здесь

Перевернуть строку
Данн текст. Необходимо вывести его буквы в обратном порядке. типо ввожу &quot;первое предложение&quot;, а...

Перевернуть строку
Написать функцию, которая переставляет символы строки по принципу обмена первого и последнего,...

Перевернуть строку
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { setlocale(LC_ALL,...

Перевернуть строку символов
Напишите программу, которая запрашивает строку символов, состоящую только из латинских букв, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru