Хранение символов 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
тип как любой другой целочисленный тип.