Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Peperovich
43 / 43 / 4
Регистрация: 17.05.2011
Сообщений: 162
#1

Переместить слова в начало строки - C++

25.12.2011, 19:56. Просмотров 847. Ответов 2
Метки нет (Все метки)

Добрый день! Дана строка CString типа, перем m_f и m_last указывают диапазон слов, которые надо перенести в начало строки.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 char *tot;
 char *str,*str3,*str2;
 str2=" ";
 str3=" ";
 i=0;
 
  str=id1.GetBuffer();
  tot=strtok(str," ");
  
  while (tot!=NULL)
  {
    if (m_f<=i && m_last>=i) strcpy(str2,tot);
    else strcpy(str3,tot);
    tot=strtok(NULL," ");
    i++;
  }
strcat(str2,str3);
Почему то вызывает ошибку Нарушение прав доступа при записи
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2011, 19:56     Переместить слова в начало строки
Посмотрите здесь:

C++ Строки символов. (Переместить последнюю букву в начало слова)
В одномерном массиве все отрицательные элементы переместить в начало массива C++
C++ Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова
C++ Переместить первую букву слова в конец слова(Строки)
Переместить все положительные элементы в начало массива C++
Отрицательные значения массива переместить в начало C++
Отрицательные значения массива переместить в начало C++
C++ В строке, состоящей из алфавитно-цифровых символов, переместить все цифры в начало
В строке, состоящей из алфавитно-цифровых символов, переместить все буквы в ее начало C++
C++ Для массива с максимальной суммой переместить положительные элементы в начало
C++ В непустом динамическом списке последний элемент переместить в начало списка
C++ Переместить 3 числа из конца очереди в начало

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6248 / 5851 / 1891
Регистрация: 18.12.2011
Сообщений: 14,990
Завершенные тесты: 1
25.12.2011, 20:48     Переместить слова в начало строки #2
Нарушение прав доступа связано с тем, что под str,str3,str2 не выделена память.
Можно написать так
char str[100],str3[100]=" ",str2[100]=" ";
Но мне кажется, вы решаете не ту задачу, в условии написано использовать объект Cstring из MFC
Peperovich
43 / 43 / 4
Регистрация: 17.05.2011
Сообщений: 162
25.12.2011, 22:23  [ТС]     Переместить слова в начало строки #3
id1 - это и есть CString
Спасибо ошибку исправило это, осталось только логику мне поправить.

Добавлено через 11 минут
Кстати почему он предлоги пропускает из 1 буквы?

Добавлено через 42 минуты
Не пойму что случилось стал ругаться на строчку
str=id1.GetBuffer();

Добавлено через 39 минут
Все таки доделал. Может кому пригодится в будущем. Выкладываю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char *tot;
char str[100]="",str3[100]="",str2[100]="";
i=1;
//id1 CString берется из CEdit
strcat(str,id1); 
tot=strtok(str," ");
strcpy(str3,tot);strcat(str3," ");
    while (tot!=NULL)
  { 
      tot=strtok(NULL," ");i++;   
      if (m_f<=i && m_last>=i && tot!=NULL) {strcat(str2,tot);strcat(str2," ");}
      if ((m_f>i || m_last<i) && tot!=NULL) {strcat(str3,tot);strcat(str3," ");}             
  }
    strcat(str2,str3);
Yandex
Объявления
25.12.2011, 22:23     Переместить слова в начало строки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru