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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2017, 18:00   #1
Rendalf
Новичок
Джуниор
 
Регистрация: 29.01.2017
Сообщений: 2
Печаль не могу разобраться с обработкой string

Всем привет! Только начал осваивать программирование по курсу cs50, задание сделать прогу для шифрования текста по Винежеру, вот написал начало:
Код:
int main (int argc, string argv[])
{
    string k = argv[1];           //присваиваем ключ (слово)
    int kl = strlen(k);             //получаем длину ключа
    string p = GetString();      //получаем исходный текст
    string c = p;                   //копируем в строку "с" исходный текст для последующей шифровки
    int l = strlen(p);              //получаем длину строки для шифровки

    // если символ - буква, то меняем его значение на символ из ключа с помощью цикла
    for (int i=0,j=0; i<l; i++,j++) 
    {
        if (isalpha (c[i]))
             c[i] = k[(j)%kl];
        else
             j--;
    }
/* И тут я сталкиваюсь с тем, что у меня исходный текст 'string p' тоже изменился на вспомогательный текст ('string c', прошедший через for цикл)! то есть 'string c' я получил как мне и надо, но при этом 'string p' стал его копией! Если например вставить после цикла команду
printf ("%s", p);
напечатается не исходный текст а обработанный циклом, а мне нужны ОБА для последующей "докодировки" по шифру Виженера.

Как сделать так, чтобы string p не менялась после for цикла?

Последний раз редактировалось Alex11223; 29.01.2017 в 18:42.
Rendalf вне форума Ответить с цитированием
Старый 29.01.2017, 18:48   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

string это что?
Судя по "string argv[]" это не std::string из С++, а просто макрос типа
Код:
#define string char*
То есть указатель на массив символов.
Поэтому от его копирования сама строка не поменяется, оба указателя так и будут указывать на одно и то же место.

В С для копирования строк есть функция strcpy.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.01.2017, 09:16   #3
Rendalf
Новичок
Джуниор
 
Регистрация: 29.01.2017
Сообщений: 2
По умолчанию

Спасибо! Разобрался!
Rendalf вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу исправить ошибку. string-переменная [C#] Fawkes Помощь студентам 1 10.03.2014 20:49
Не могу разобраться Rammstalex Паскаль, Turbo Pascal, PascalABC.NET 2 07.06.2013 21:02
Не могу разобраться semAz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.03.2010 17:43
НЕ МОГУ РАЗОБРАТЬСЯ... GSV84 HTML и CSS 0 03.02.2010 01:38
Не могу разобраться Zmaxer Помощь студентам 24 10.10.2009 18:52