Хранение символов ASCII в массиве в C

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

В настоящее время мне удалось создать простой массив, который в настоящее время содержит 6 значений.

#include <stdio.h>
#include <conio.h>

    int main()
{
    int i;

    int  array[255] = {1, 2, 3 , 4, 5, 6 };

    for(i = 0; i < 6; i++)
    {
        printf("%d", array[i]); /* Prints out all values declared in the array*/
    }

    return 0;
}

выход: 123456

В настоящее время я застрял в попытке выяснить, как заменить цифры на символы ASCII. Если бы кто-нибудь мог помочь мне понять это, я был бы очень благодарен.

3 ответа

Решение

Ваш начальный код уже довольно точен.

Ваша единственная ошибка: printf("%d", array[i]);

Спецификатор %d выведет десятичное целое со знаком, чтобы вывести символ, используйте спецификатор %c. Вы можете просмотреть всю документацию (включая спецификаторы) для printf здесь

Я также взял на себя смелость заменить элементы в массиве на целые числа, которые приводят к буквенно-цифровому выводу.

#include <stdio.h>
#include <conio.h>

int main()
{
    int i;
    int array[255] = { 65, 66, 67 , 68, 69, 70 };

    for(i = 0; i < 6; i++)
    {
        printf("%c", array[i]); // Outputs: ABCDEF
    }

    return 0;
}

Ваши следующие шаги - просто рандомизировать длину и элементы массива! Удачи.

Используйте символьные литералы в элементах массива и печатайте их с %c формат.

#include <stdio.h>
#include <conio.h>

int main()
{
    int i;

    int  array[255] = {'1', '2', '3' , '4', '5', '6' };

    for(i = 0; i < 6; i++)
    {
        printf("%c", array[i]); /* Prints out all values declared in the array*/
    }

    return 0;
}

Вы также можете изменить объявление массива на char array[255], поскольку он содержит только символы. Для целей printf() это не имеет значения, потому что char переменные автоматически преобразуются в int при вызове функции типа variadic printf (но я не удивлюсь, если компиляторы напечатают предупреждение об этом, поскольку это необычно).

Прежде всего, компьютер ничего не знает о персонажах - с его точки зрения, все это просто число.

char тип - это просто целочисленное значение размера (в битах) CHAR_BITS. В большинстве систем это 8 бит. В зависимости от вашей реализации и параметров компиляции char может быть подписан или не подписан.

Рассмотрим подписанную версию. В 32-битной системе:

int тип обычно составляет 32 бита,

short обычно 16 бит в ширину

char обычно 8 бит в ширину

так это можно назвать суперскоростью:)

typedef char supershort;

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

Начинающих часто смущают константы типа char: 'a', 'b'.... и т.д., и это заставляет их думать, что char это что-то особенное, но только для удобства людей - намного сложнее запомнить всю таблицу ASCII.

Вы можете использовать их с любыми другими типами номеров:long x = 'a'; или даже double y = '#'

Предполагая: вы можете использовать char тип как любой другой целочисленный тип.

Другие вопросы по тегам