Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с вход. и выход. массивами в Си 
:(
    Опции темы
DanilSoldatov
Дата 29.5.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 30.4.2008

Репутация: нет
Всего: нет



Привет господа програмисты!
 
Вопрос наверное очень глупый но тем не менее...для меня это вопросsmile
Есть функция с входным массивом 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[i]);           //функция для дебага
      outData[i - aFromPos - 2] = aData[i]; // просто присваиваю элемент массива 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 я обнуляю перед циклом, а он не нулевой (как это видно в дебаге). Как это можно объяснить?
PM MAIL   Вверх
Fazil6
Дата 29.5.2008, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Код

DBG_PutS(aData[i]); 

покажи эту функцию

Добавлено через 3 минуты и 41 секунду
если выводит aData[21] = 205 , то у тебя какие-то траблы с приведением типов. Не может char  быть 205 или 229
PM MAIL   Вверх
DanilSoldatov
Дата 29.5.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 30.4.2008

Репутация: нет
Всего: нет



void DBG_PutS( char *p );

ф-ция работает без сбоев (на самом деле я вызываю как показано ниже, но это не принципиально):

Код

DBG_PutS(ssprintf( "\n\raData[%u] = %u \r\n", i, aData[i] ));

DBG_PutS(ssprintf( "\n\routData[%u] = %u \r\n", i - aFromPos - 2, outData[i - aFromPos - 2] )); 



Я думаю ошибка там где-то в указателях

Цитата

Не может char  быть 205 или 229

Почему это? может!
PM MAIL   Вверх
Fazil6
Дата 29.5.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Код

void DBG_PutS( char *p );

а передаешь ему char,   smile 
Код

 DBG_PutS(aData[i]);

Цитата(DanilSoldatov @  29.5.2008,  15:55 Найти цитируемый пост)
Почему это? может! 

уверен? Я всегда считал, что максимальное число умещающееся в char не больше 127

Добавлено через 8 минут и 2 секунды
так что выводит
Код

DBG_PutS(ssprintf( "\n\raData[%u] = %c \r\n", i, aData[i] ));

?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.