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

Замена символов в строке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Rass7et
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 3
15.10.2013, 02:55     Замена символов в строке #1
В общем, я не понимаю логики программирования, потому что я идиот
Задание: Ввести строку, символ который заменить и символ на который заменить, произвести замену.
Естественно я ничерта не понял как это делать. Предлагается использовать функции из string.h
моя попытка
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
26
27
28
29
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
# include <string.h>
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char buffer[100]; // ñîçäГ*ГҐГІГ±Гї Г¬Г*Г±Г±ГЁГў
        memset(buffer, 0, sizeof(buffer));
        cout<<"Ââåäèòå ñòðîêó:\n"; //ââîäèì ñòðîêó
        gets(buffer);
    char c; int i=0,k=0;
    cout<<"Ââåäèòå ñèìâîë êîòîðûé Г§Г*ìåГ*ГїГҐГ¬:\n";
    cin>>c;
    char z;
    cout<<"Ââåäèòå ÍÎÂÛÉ ñèìâîë:\n";
    cin>>z;
    
    while(buffer[i])
    {if (strcmp(buffer[i++],c)=0 
    strcpy(buffer[i],z);
    
    
}
puts(buffer);
    system("pause");
}
спасайте

Добавлено через 52 минуты
Неужели все уже спят?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2013, 02:55     Замена символов в строке
Посмотрите здесь:

C++ Замена в строке символов
Замена символов в строке C++
Замена символов в строке C++
замена символов в строке C++
C++ Замена символов в строке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mytilus
82 / 82 / 8
Регистрация: 04.10.2012
Сообщений: 329
15.10.2013, 03:23     Замена символов в строке #2
Вы сравниваете два символа функцией strcmp, которой сравнивают не символы, а строки. Поэтому ничего и не работает. К тому же у вас достаточно частая ошибка в строке 22 - "=" вместо "==". Да и скобка там пропущена...
Плюс ко всему в строке 22 к i прибавляется единица. Это значит, что в строке 23 вы указываете не тот же символ, а следующий.
Короче, замените строки 21-26 на:
C++
1
for (; buffer[i]; i++) if (buffer[i] == c) buffer[i] = z;
kirill_mihalkov
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 6
15.10.2013, 14:11     Замена символов в строке #3
C++
1
2
3
4
5
6
7
8
9
char * substr(const char *src, int from, int size) 
{
    char * c_TmpStr = new char[size + 1];
    int j = 0;
    for (int i = from; i < from + size; i++)
        c_TmpStr[j++] = src[i];
    c_TmpStr[size] = 0;
    return c_TmpStr;
}
Используя этот код можно добиться нужного результата.
mytilus
82 / 82 / 8
Регистрация: 04.10.2012
Сообщений: 329
15.10.2013, 18:29     Замена символов в строке #4
kirill_mihalkov, ваша функция возвращает подстроку, а автору требуется найти все вхождения указанного символа и заменить его на другой. Тут такую функцию надо:
C++
1
2
3
void __inline ReplaceChar(char *Str, const char Old, const char New) {
  for (int index = 0; Str[index]; index++) if (Str[index] == Old) Str[index] = New;
}
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 438
15.10.2013, 20:52     Замена символов в строке #5
Цитата Сообщение от Rass7et Посмотреть сообщение
Ввести строку, символ который заменить и символ на который заменить, произвести замену.
Все же просто:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <string>
#include <algorithm>
#include <iostream>
 
using namespace std;
 
int main() {
    cout << "Enter string: ";
    string s;
    getline(cin, s);
 
    cout << "Enter replaced char: ";
    char from;
    cin >> from;
 
    cout << "Enter replacing char: ";
    char to;
    cin >> to;
 
    replace(begin(s), end(s), from, to);
 
    cout << "After replacement: \"" << s << "\"" << endl;
}
Enter string: asdfghasdfghhh
Enter replaced char: h
Enter replacing char: q
After replacement: "asdfgqasdfgqqq"
Yandex
Объявления
15.10.2013, 20:52     Замена символов в строке
Ответ Создать тему
Опции темы

Текущее время: 17:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru