1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

сроковый масив

Тема в разделе "С и С++", создана пользователем o4en1 krutoi, 6 дек 2007.

  1. o4en1 krutoi

    o4en1 krutoi Гость

    Репутация:
    0
    #include <iostream>
    #include <windows.h>
    using namespace std;
    void main()
    {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char str[] = "Здравствуй, мир!"; // объявляем символьный массив
    char *b; // объявляем указатель на символ
    b = &str[12]; // теперь b указывает на 12-ый символ str //символ это пробел
    *b = 'M'; // присваиваем первому элементу b символ 'М'
    cout << b; // выводим строку b на экран (Мир!) //присвоили указателю b
    символ 'M' а выходит слово мир почему не 'M' подскажите хто знает
    }
     
  2. Over

    Over Well-Known Member

    Репутация:
    0
    Регистрация:
    4 июл 2007
    Сообщения:
    116
    Симпатии:
    0
    У тебя указателю присваивают адрес буквы "м". Вся строка остаётся в памяти. Только указатель запоминает позицию буквы "м". Это не значит, что обратившись к b, мы можем обратиться только к букве "м" и всё, мы можем обращаться к любому символу строки. Потом вместо м маленькой прописывается М большая. Просто обычное присвоение одного символа. Опять же, на целостность всей строки это никак не влияет, просто байтик подменился, а строка не развалилась, не раскидалась, не отвалился от строки конец после буквы м, и не отвалилось от строки начало до буквы м. Дальше, функция cout выполняет вывод на экран. Если ей скормить указатель на строку, то функция выводит последовательно все последующие символы строки, начиная с того, на который указывает b, пока не дойдёт до символа "\0" - ноль-терминатор или символ окончания строки. Вот поэтому у тебя и вывелось на экран всё, что было от буквы м и до конца строки, т.е. слово Мир.
     
  3. o4en1 krutoi

    o4en1 krutoi Гость

    Репутация:
    0
    #include <iostream>
    #include <windows.h>
    using namespace std;
    void main()
    {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char str[100]; // объявление строки символов

    // просим пользователя ввести строку символов
    cout << "введите строку: ";
    cin >> str; // считываем строку, введенную пользователем

    int count = 0; /* объявление переменной-счетчика, в которой
    будем хранить количество вхождений х в строку */

    // в цикле сравниваем каждый символ строки с х-ом,
    // в случае совпадения увеличиваем переменную-счетчик на 1.
    int i = 0;
    while(str != '\0')
    {
    if (str == 'x') //хочу сделать так штобы прога искала не x а считала символы на што х поменять штобы она считала символы
    count++;
    i++;
    }

    // выводим результат на экран
    cout << "\n данные " << count;
    }
     
  4. gamecreator

    gamecreator Гость

    Репутация:
    0
    ты хочешь подсчитать кол-во символов в массиве? strlen. а еще у тебя неоптимизированный код.
     
  5. o4en1 krutoi

    o4en1 krutoi Гость

    Репутация:
    0
    почему неоптимизированый код
    мне надо научится такое задние учителя функцию надо написать самому
     
  6. gamecreator

    gamecreator Гость

    Репутация:
    0
    ну так убери if (str == 'x') и в count получишь кол-во элементов
     
Загрузка...
Похожие Темы - сроковый масив
  1. Andrey0707
    Ответов:
    1
    Просмотров:
    845
  2. Gartus

    Масив

    Gartus, 9 ноя 2014, в разделе: С и С++
    Ответов:
    1
    Просмотров:
    912
  3. andriana
    Ответов:
    1
    Просмотров:
    1.310
  4. Jora
    Ответов:
    4
    Просмотров:
    1.621
  5. Вадим90
    Ответов:
    1
    Просмотров:
    1.327

Поделиться этой страницей