Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2009, 21:03   #1
Байт
 
Регистрация: 13.08.2008
Сообщений: 9
По умолчанию Конец числового массива char

Делаю функцию чтобы записывала массив char с числами в массив char как строку (т.е. числа из того массива) Вообщем мне нужно опред. конец числового массива (допустим первый неинициализированный элемент)
Ну со строчным массивом все понятно:

Код:
int _tmain(int argc, char *argv[])
{
	char x[8]="dfaf";
	
	for(int i=0; x[i]!=NULL; i++)
	{
		if(x[i]==EOF)
		//ЕСЛИ УСЛОВИЕ ВЫПОЛНЯЕТСЯ ЗНАЧИТ КОНЕЦ МАССИВА
	}

	 _getch();
     return 0;
}
А вот как сделать тоже самое только с числовым массивом (char)

Код:
int _tmain(int argc, char *argv[])
{
	char x[8];
           x[0]= 53;
           x[1]= 5;
           x[2]= 43;
	
	??????
           ??????
           ??????

	 _getch();
     return 0;
}
Модератор: тег CODE

Последний раз редактировалось MaTBeu; 29.01.2009 в 22:46.
Байт вне форума Ответить с цитированием
Старый 30.01.2009, 00:57   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Код:
int _tmain(int argc, char *argv[])
{
	char x[8];
           x[0]= 53;
           x[1]= 5;
           x[2]= 43;
	
	??????
           ??????
           ??????

	 _getch();
     return 0;
}
так ты записываеш в массив символы по их ацким кодам
у тебя получается, что

x[0] - это символ '5'
x[1] - это непонятно что
x[2] - это символ '+
'
чтобы записать число надо пользоваться интом

Код:
int x[8];

Последний раз редактировалось counter; 30.01.2009 в 01:31.
counter вне форума Ответить с цитированием
Старый 30.01.2009, 01:19   #3
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

При такой записи:
Код:
char x[8];
           x[0]= 53;
           x[1]= 5;
           x[2]= 43;
В массив запишется только 3 элемента, остальное будет машинный мусор. Определить, где заканчиваются нужные элементы, и где начинается мусор нет никакой возможности.
Чтобы было все нормально, нужно либо выбрать размерность массива именно такую, сколько в нем будет храниться элементов, тогда можно будет сделать так:
Код:
...
char c[3];
c[0]=53;
c[1]=5;
c[2]=43;

for(i=0;i<3;i++)
{
...
}
...
Либо, если размерность массива заведомо больше, чем количество элементов, введенных в него, то надо после ввода последнего элемента, ввести какой нибудь символ, показывающий конец, например:
Код:
...
char c[8];
c[0]=53;
c[1]=5;
c[2]=43;
c[3]='x';

for(i=0;c[i]!='x';i++)
{
...
}
...
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария

Последний раз редактировалось Blade; 30.01.2009 в 01:21.
Blade вне форума Ответить с цитированием
Старый 30.01.2009, 12:40   #4
Байт
 
Регистрация: 13.08.2008
Сообщений: 9
По умолчанию

Blade
Спасибо))
Как я сам не додумался поставить какой-нибудь символ в конце массива.
Байт вне форума Ответить с цитированием
Старый 04.02.2009, 21:19   #5
AlexDX
Пользователь
 
Регистрация: 04.02.2009
Сообщений: 10
По умолчанию

Ну прикинь в конце будешь ставить какой ни будь символ,
символ представляется ASCII значением он может получить совпадение
на ASCII число 'x' и что будет - имхо массив закончится, сделай то что я тебя написал и проблем никогда не будет:

char arr[4];
arr[0] = 65;
arr[1] = 66;
arr[2] = 67;
arr[3] = 68;

int size = sizeof(arr) / sizeof(char);
const char* ptr = arr;
while( true ) {
if( ! size ) {
// здесь можно получить событие о конце массива
cout << "EOF ARRAYS" << endl;
break;
}
size--;
cout << *ptr++ << endl; // получение данных
}
AlexDX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка двумерного числового массива «спиралью» vicvtor Помощь студентам 2 06.07.2011 09:10
Ошибка cannot convert from 'char *' to 'char [100]' Stellvertreter Общие вопросы C/C++ 5 30.05.2010 00:02
Возвращение массива символов char ActioNs Общие вопросы C/C++ 3 10.01.2009 02:33
Поиск числового значения в текстовом файле GazimagomedovM Помощь студентам 6 07.07.2008 19:22
Есть таблица - В ней три поля int, char, char нужно чтобы данные заносились в таблицу Mysql Muahahaha PHP 8 27.03.2008 11:17