Хранение символов ASCII в массиве в C - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь создать генератор случайных чисел, используя символы 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;
}

output: 123456

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

Ответы [ 3 ]

0 голосов
/ 30 сентября 2018

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

Ваша единственная ошибка: 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;
}

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

0 голосов
/ 30 сентября 2018

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

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

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

int обычно имеет ширину 32 бита,

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

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

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

typedef char supershort;

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

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

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

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

0 голосов
/ 30 сентября 2018

Используйте символьные литералы в элементах массива и печатайте их в формате %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 при вызове функции с переменными числами, такой как printf (но я не удивлюсь, если компиляторы выведут предупреждение об этом,так как это необычно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...