PDA

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


Дикс
08.07.2007, 08:30
Вот есть у меня 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 кто-нить знает, могут ли кошачьи блохи кусать человека и жить на нём? Задрали, сцуко

_Great_
08.07.2007, 11:32
pntr-указатель
что ты этим хотел сделать?
pntr = "%";
Это вполне корректное присвоение константной строки указателю.
Но я думаю хотел он явно не этого... а *pntr='%'.
Дальше делаешь pntr++; и рабоатешь со след символом.. *pntr='9';

Joker-jar
08.07.2007, 12:14
Хотелось бы его обнулить сразу, но знаю только метод тупого перебора элементов с присвоением каждому значения 0
Функция ZeroMemory. В Делфи есть еще FillChar, но в Си такой не припоминаю

_Great_
08.07.2007, 14:15
memset из CRT; ZeroMemory - WinAPI, RtlZeroMemory - NativeAPI.

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

razzzar
08.07.2007, 18:52
я обычно обнуляю memset'ом:

char szText[1024];
memset(szText, 0, sizeof ( szText )); // аналогично memset(szText, 0, 1024);