Будет ли это работать при копировании строки? - PullRequest
0 голосов
/ 31 января 2012

Я пытаюсь скопировать ПИН-код (в ПИН-коде есть данные) в темп.(Предполагая, что PIN-код всегда меньше, чем temp)

const char * PIN;
.... 
char [10] temp  ="";
int i = 0; 
while (*(PIN+i)) {
    temp[i] = (PIN+i)*;
    i++;
}

Также было бы хорошо, если бы я рассматривал temp как указатель как таковой?

long int res = strtol (&temp, NULL, 10);

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Нет!

PIN+i не меняет состояние. Это будет верно, пока PIN плюс i не равно нулю. Поскольку PIN является случайным адресом памяти, это плохая идея.

Если вы хотите скопировать строку, посмотрите на strcpy.

1 голос
/ 31 января 2012

Несколько вещей,

temp = "\ 0" На самом деле в строку будут помещены два \ 0, тот, который вы написали, и один, подразумеваемый в кавычке.

PIN + я должен быть разыменован (с помощью *), или он будет продолжаться и продолжаться, если вы не можете гарантировать нулевой указатель в конце адресного пространства.

while (*(PIN+i))

Затем для копирования символов, а не указателей, оператор присваивания также должен быть разыменован.

temp[i]=*(PIN+i);
i++; // Because the pointer needs to be incremented

Кроме того, почему бы вам просто не использовать strcpy? или strncpy?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...