• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Символьный Массив В Си

  • Автор темы d3fToR
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

d3fToR

Нужно объявить массив, чтобы в каждом элементе массива с 0 по 25 были по одной цифре и букве ( вроде 0,1,2,3,4,5,6,...,A,B,C,...).
Я знаю как объявить, допустим, эти же символы, как одно слово, а мне нужно разделение на ячейки, чтобы в 9 ячейке лежала цифра 9. Как такое провернуть ?)

вот так провильно?
Код:
char nich={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'};

И ещё, мне нужно, чтобы введённое число с клавы записывалось поразрядно в массив, т.е, я ввожу, например 122, то массив выглядел бы так 0000 0000 0000 0122 ( вроде 16 знаков, если что поправьте )

вот такой код должен быть?
Код:
scanf("%i",&mass);

Заранее спасибо :)
 
Q

qqwertty

char nich={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'};
Это неправильно, объявление должно быть char nich[] = {.........}
это во-первых. Во-вторых, заполняйте лучше в цикле, чтобы размерность если что поменять можно было в одном месте. Мало ли для тестов потом понадобится.

Насчет второго, если mass - это массив, то конечно же нет. В вашем случае надо считывать число (десятичное?), а потом уже разбивать его и записывать в массив. Или же считывать строку, тогда разбивать не надо, но нули в начало добавлять придется.
 
A

Antech

d3fToR
Насчет первого пункта уже ответили: если Вы объявляете массив с инициализацией и размер берется из инициализации, то должна быть указана форма массива, а количество элементов определится автоматически. Т.е. у Вас не хватает квадратных скобок после имени массива.
И насчет цикла верно заметили выше. Только нужно посмотреть ASCII-коды цифр 0...9 и букв A...O.

Код:
// Declarations
int iChr=-1,iCode;
char chr[26];
// Digits 0...9 (ASCII 0x30...0x39)
for (iCode=0x30;iCode<=0x39;iCode++)
{
iChr=iChr+1;
chr[iChr]=iCode;
};
// Letters A...O (ASCII 0x41...0x4F)
for (iCode=0x41;iCode<=0x4F;iCode++)
{
iChr=iChr+1;
chr[iChr]=iCode;
};


По второму пункту можно воспользоваться itoa. Она вернет строку, которую можно потом скопировать в нужные элементы Вашего массива, или Вы просто можете сразу поместить строку в Ваш массив:
Код:
// Declarations
integer num;
char chr[26];
// Read number from console and convert to a string
scanf("%i",num); // Input integer number
itoa(num,chr,10); // Convert to string (base 10 == decimal, use 16 for hex)
Или Вы можете использовать в itoa промежуточную строку, а потом в цикле (или memcpy) скопировать символы в нужные элементы массива chr[].
 
D

d3fToR

Спасибо, правда не всё понятно :)) буду учиться)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!