我正在尝试使用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字符替换数字。如果有人能帮助我解决这个问题,我将不胜感激。
答案 0 :(得分:3)
在数组元素中使用字符文字,并以%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
(但我不会感到惊讶如果编译器对此发出警告,因为这很不正常。
答案 1 :(得分:3)
您的初始代码已经非常准确了。
您唯一的错误是:printf("%d", array[i]);
%d 说明符将输出一个带符号的十进制整数,要使用%c 说明符输出字符。
您可以查看printf
here的所有文档(包括说明符)。
我也很自由地将数组中的元素替换为可产生字母数字输出的整数。
#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;
}
接下来的步骤是将长度和数组元素随机化!祝你好运。
答案 2 :(得分:0)
首先,计算机对字符一无所知-从它的观点来看,一切都只是数字。
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
类型用作任何其他整数类型。