nixp.ru v3.0

17 января 2017,
вторник,
20:15:23 MSK

DevOps с компанией «Флант»
DanilSoldatov написал 29 мая 2008 года в 16:09 (477 просмотров) Ведет себя неопределенно; открыл 3 темы в форуме, оставил 4 комментария на сайте.

Привет господа програмисты!

Вопрос наверное очень глупый но тем не менее…для меня это вопрос:)

Есть функция с входным массивом aData и выходным outData, которая берет размер aStrLen из массива aData и по нему копирует данные в выходной массив outData

WORD StrFromArray( char *aData, int len, const int aFromPos, char *outData)

{

WORD aStrLen;

aStrLen = WordFromArray(aData, aFromPos);

memset( outData, 0, aStrLen);

for ( int i = aFromPos + 2; i <= aFromPos + aStrLen + 1; i++ )

{

DBG_PutS(aData); //функция для дебага

outData[i - aFromPos - 2] = aData; // просто присваиваю элемент массива aData элементу outData

DBG_PutS(outData[i - aFromPos - 2]);

}

return aStrLen;

}

Вызываю так:

char *vResultBuf, *aErrorMessage;

StrFromArray(vResultBuf, strlen(vResultBuf), 19, aErrorMessage);

а в дебаге вижу:

aData[21] = 205

outData[0] = 0

aData[22] = 229

outData[1] = 0

aData[23] = 229

outData[2] = 59

aData[24] = 238

outData[3] = 32

и т.д

Т.е. я явно в цикле присваиваю элементу одного массива элемент другого, а в дебаге вижу, что элементы outData и aData отличаются

И мало того: массив outData я обнуляю перед циклом, а он не нулевой (как это видно в дебаге). Как это можно объяснить?

metal
DanilSoldatov
Привет господа програмисты!

Вызываю так:

char *vResultBuf, *aErrorMessage;

StrFromArray(vResultBuf, strlen(vResultBuf), 19, aErrorMessage);

Вызываешь не с массивами,а с указателями.

DanilSoldatov

Если вызываю так, то ничего не меняется:

char vResultBuf[30], aErrorMessage[30];

StrFromArray(vResultBuf, strlen(vResultBuf), 19, aErrorMessage);

metal
DanilSoldatov
Если вызываю так, то ничего не меняется:

char vResultBuf[30], aErrorMessage[30];

StrFromArray(vResultBuf, strlen(vResultBuf), 19, aErrorMessage);

Используешь strlen где не следует.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.