Обращение с char-массивом через указатель [C++]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Дикс, 8 Jul 2007.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    Вот есть у меня char-массив
    char mem[1024];

    Если его щас вывести через указатель на первый элемент то там полно всякой чуши. Хотелось бы его обнулить сразу, но знаю только метод тупого перебора элементов с присвоением каждому значения 0.

    Мне вот чего надо.
    Создать указатель на массив и затем через указатель присваивать ему цифры и символы.
    Т.е. вначале поставил процент, инкрементировал указатель, затем внёс какой-нить инт и опять инкрементировал. И при этом следить чтобы массив не переполнился, а затем вернуть сцылку на его начало и вывести его весь на экран.


    Вот я создал указатель на начало
    char *start = mem;
    этого достаточно чтобы потом выводить его на экран?

    Создаю ещё один указатель,
    char *pntr = mem;

    пытаюсь присвоить ему значение:
    1. если вот так
    pntr = "%";
    прога вылетает,
    2. если вот так
    *pntr = "%";
    error C2440: '=' : cannot convert from 'char [2]' to 'char'


    PS кто-нить знает, могут ли кошачьи блохи кусать человека и жить на нём? Задрали, сцуко
     
  2. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    Это вполне корректное присвоение константной строки указателю.
    Но я думаю хотел он явно не этого... а *pntr='%'.
    Дальше делаешь pntr++; и рабоатешь со след символом.. *pntr='9';
     
  3. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Функция ZeroMemory. В Делфи есть еще FillChar, но в Си такой не припоминаю
     
  4. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,118
    Reputations:
    1,139
    memset из CRT; ZeroMemory - WinAPI, RtlZeroMemory - NativeAPI.

    в конце концов вызывается насколько я помню все равно третья, которая сводится к асм команде STOS.
     
  5. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    я обычно обнуляю memset'ом:
    Code:
    char szText[1024];
    memset(szText, 0, sizeof ( szText )); // аналогично memset(szText, 0, 1024);
    
     
Loading...