• Nwafu-OJ-1487 Problem q C语言实习题八——ASCII字模文件


    问题 : C语言实习题八——ASCII字模文件

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 2873  解决: 1337
    [提交][状态][讨论版]

    题目描述

    请编程从字模文件ASC10x8.dic中读取指定字符串中ASCII字符的点阵字模并用“#”显示在屏幕上。
    字模文件中存放了0x20到0x7E共95个ASCII字符的点阵字模数据,每个ASCII字符对应10个字节,如:
    A的字模数据(ASCII值为0x41,字模数据在文件中的偏移量为(0x41-0x20)*10=330)为:0x00,0x00,0x20,0x20,0x30,0x50,0x50,0x78,0x48,0xCC

    ~~~~~~~~  //0x00(以下用~示意空格)
    ~~~~~~~~  //0x00
    ~~#~~~~~  //0x20
    ~~#~~~~~  //0x20
    ~~##~~~~  //0x30
    ~#~#~~~~  //0x50
    ~#~#~~~~  //0x50
    ~####~~~  //0x78
    ~#~~#~~~  //0x48
    #~#~#~#~  //0xCC

    字模文件为二进制文件,本地调试时可从这里下载。

    输入

    待输出字符串,仅包含英文ASCII字符,长度不超过20个字符。

    输出

    字符串对应的字模点阵信息

    样例输入

    ABC

    样例输出

                            
                            
      #     ####     ####   
      #      #  #   #   #   
      ##     #  #   #       
     # #     ###    #       
     # #     #  #   #       
     ####    #  #   #       
     #  #    #  #   #   #   
    # # # # ####     ###    

    提示

    在程序需要当前下使用名为"ASC10x8.dic"的字模文件,注意文件名大小写,并以二进制方式打开。

    代码实现

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. int main() {
    8. FILE* fp = fopen("ASC10x8.dic", "rb");
    9. int i, j,k;
    10. char s[20] = { 0 };
    11. fgets(s, 20, stdin);
    12. char* p = s;
    13. // 申请动态二维数组
    14. int length = strlen(s);
    15. s[length - 1] = '\0';
    16. length = strlen(s);
    17. unsigned char** arr = (unsigned char**)calloc(10, sizeof(unsigned char*));
    18. for (i = 0; i < 10; i++) {
    19. arr[i] = (unsigned char*)calloc(length, 1);
    20. }
    21. // 将二进制文件放进二位数组
    22. for (i = 0; i < length; i++) {
    23. for (j = 0; j < 10; j++) {
    24. int pian_yi = (*(p+i) - 32) * 10;
    25. fseek(fp, pian_yi+j, SEEK_SET);
    26. fread(&arr[j][i], 1, 1, fp);
    27. }
    28. }
    29. // 将二进制文件打印出来
    30. for (i = 0; i < 10; i++) {
    31. for (j = 0; j < length; j++) {
    32. int arr_bool_[8] = { 0 };
    33. int bit = 7;
    34. while (bit >= 0) {
    35. arr_bool_[bit] = arr[i][j] % 2;
    36. arr[i][j] >>= 1;
    37. bit--;
    38. }
    39. for (k = 0; k < 8; k++) {
    40. if (arr_bool_[k] == 0) {
    41. printf(" ");
    42. }
    43. else
    44. {
    45. printf("#");
    46. }
    47. }
    48. }
    49. printf("\n");
    50. }
    51. fclose(fp);
    52. return 0;
    53. }

  • 相关阅读:
    SIM800C模块AT指令编程指南
    递归:x的n次幂
    性能测试之Fiddler 如何批量修改请求信息
    普适型GNSS接收机_一体化GNSS测量仪
    git删除文件提交,删除文件按后这个记录怎么提交?
    (66)MIPI DSI LLP介绍(六)
    【python 】----Pytest基础知识与进阶知识
    合成数据的好处和用途
    Hive Lateral View explode列为空时导致数据异常丢失
    游戏盾的防御原理及产品特性
  • 原文地址:https://blog.csdn.net/qq_53436105/article/details/128087114