在C中的数组中存储ASCII字符

时间:2018-09-29 21:27:47

标签: c arrays random numbers ascii

我正在尝试使用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 个答案:

答案 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类型用作任何其他整数类型。