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

Тема в разделе "Общие вопросы по С и С++", создана пользователем d3fToR, 19 фев 2012.

Статус темы:
Закрыта.
  1. d3fToR

    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);

    Заранее спасибо :)
     
  2. qqwertty

    qqwertty Гость

    Это неправильно, объявление должно быть char nich[] = {.........}
    это во-первых. Во-вторых, заполняйте лучше в цикле, чтобы размерность если что поменять можно было в одном месте. Мало ли для тестов потом понадобится.

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

    Antech Гость

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

    Код (Text):
    // 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. Она вернет строку, которую можно потом скопировать в нужные элементы Вашего массива, или Вы просто можете сразу поместить строку в Ваш массив:
    Код (Text):
    // 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[].
     
  4. d3fToR

    d3fToR Гость

    Спасибо, правда не всё понятно :)) буду учиться)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей