Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Обращение с char-массивом через указатель [C++] (https://forum.antichat.xyz/showthread.php?t=43989)

Дикс 08.07.2007 08:30

Обращение с char-массивом через указатель [C++]
 
Вот есть у меня 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

Цитата:

Сообщение от invlose
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);



Время: 11:14