c - 需要帮助了解如何使用 get char 在终端中输入句子

标签 c input terminal getchar

#include <stdio.h>
#include <string.h>

int row;
int col;
int input;
int offset;
char ascii[7][580] = {
    "        *    * *    * *   *   **     **       *   *     *                                     *  ***  ***** ***** ***** ***** ***** ***** ***** ***** *****                *         *      **   ***   ***  ****   **** ****  ***** *****  **** *   * ***** ***** *   * *     *   * *   *  ***  ****   ***  ****   **** ***** *   * *   * *   * *   * *   * *****  ***  *      ***    *         *         *               *         **        *                        **                                              *                                          **    *    **        ",
    "        *    * *    * *  **** **  * *  *     *   *       *  * * *   *                        *  *   * ***** ***** ***** ***** ***** ***** ***** ***** *****   **    **    *           *       * *   * *   * *   * *     *   * *     *     *     *   *   *      *  *  *  *     ** ** **  * *   * *   * *   * *   * *       *   *   * *   * *   * *   * *   *     *  *     *       *   * *         *        *               *        *  *       *                         *                                              *                                         *      *      *       ",
    "        *    * *  ***** * *      *  * *     *   *         *  ***    *                        *  *   * ***** ***** ***** ***** ***** ***** ***** ***** *****   **    **   *    *****    *      * *  ** *   * *   * *     *   * *     *     *     *   *   *      *  * *   *     ** ** **  * *   * *   * *   * *   * *       *   *   * *   * *   *  * *   * *     *   *     *       *  *   *         *  ***  *      ***      *  ***   *     **** *       *     *   *  *    *   ****  ****   ***  ****   **** * **   ***  ***** *   * *   * *   * *   * *   * *****  *      *      *   *   ",
    "        *          * *   ***    *    *          *         *   *    ***        *****         *   *   * ***** ***** ***** ***** ***** ***** ***** ***** *****             *               *   **  * * * ***** ****  *     *   * ***** ***** * *** *****   *      *  **    *     * * * * * * *   * ****  *   * ****   ***    *   *   *  * *  * * *   *     *     *    *      *      *                      * ****  *   *  **** *   * ***** *   * ****              * *     *   * * * *   * *   * *   * *   * *   * *      *    *   * *   * *   *  * *   * *     *  *       *       * * * *",
    "        *         *****   * *  *    * * *       *         *  ***    *     **          **   *    *   * ***** ***** ***** ***** ***** ***** ***** ***** *****   **    **   *    *****    *    *   *  *  *   * *   * *     *   * *     *     *   * *   *   *      *  * *   *     *   * *  ** *   * *     * * * *   *     *   *   *   *  * *  ** **  * *    *    *     *       *     *                   **** *   * *     *   * *****  *     **** *   *   *     *   **      *   * * * *   * *   * ****   **** *      ***   *    *   *  * *  * * *   *     *     *    *      *      *     * ",        
    "                  * *   ****  *  ** *  *         *       *  * * *   *     **          **   *    *   * ***** ***** ***** ***** ***** ***** ***** ***** *****   **    **    *           *         *     *   * *   * *     *   * *     *     *   * *   *   *   *  *  *  *  *     *   * *  ** *   * *     *  ** *   *     *   *   *   *  * *  ** ** *   *   *   *      *       *     *                  *   * *   * *   * *   * *      *        * *   *   *     *   **      *   * * * *   * *   * *         * *         *  *  * *   *  * *  * * *  * *   *     *     *      *      *       ",
    "        *         * *     *      **  ** *         *     *                 *               *      ***  ***** ***** ***** ***** ***** ***** ***** ***** *****         *      *         *      *    ***  *   * ****   **** ****  ***** *      ***  *   * *****  **   *   * ***** *   * *   *  ***  *      **** *   * ****    *    ***    *   *   * *   *   *   *****  ***      *  ***        *****      ***   ***   ***   ***   ***   *     ***  *   *  ***  **    *  *   ***  * * * *   *  ***  *       **  *      ***    **   ****   *    * *  * * * *     *****   **    *    **        ",

};


int main(int argc, char const *argv[]){



//for loop for the rows down 
for(row = 0; row < 7; row++){
    printf("%c", ascii[row][col]);
        //columns for each segment of stars or space
        for(col = 0; col < 6; col++){

        }//end of cols
    }//end of rows
}

我使用了一个二维数组来存储 ascii 值的模型,我没有添加数字我希望能够使用终端输入字母和符号然后让它们以星号打印任何人都可以帮忙我明白如何做到这一点。

最佳答案

假设注释掉的 for 循环将当前字符分配给变量 ch:

putchar(ascii[row][(ch - 32)*6 + col]);

(ch-32) 将带您到“字体”的开头。

(ch-32)*6 将跳过字体中所有先前字符的所有“星号列”。

(ch-32)*7 + col 选择当前字符的当前“星号列”。

void print_line(char *str)
{
    char ch, *p;
    int row, col;
    for (row = 0; row < 7; row++)
    {
        for (p = str; ch = *p; p++)
        {
            /* Check that ch is in the printable range of ASCII. */
            if (ch < 32 || ch > 95)
                ch = '?';  /* or continue; */
            for (col = 0; col < 6; col++)
                putchar(ascii[row][(ch - 32)*6 + col]);
        }
        putchar('\n');
    }
}

此函数一次只能处理一行。

关于c - 需要帮助了解如何使用 get char 在终端中输入句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40177767/

相关文章:

linux - 从 bin 文件夹运行 Ubuntu 终端

command-line - 控制台上的水平线?

linux - 代码在命令提示符中不断重复

c - 访问 IPC 共享内存上的特定元素

java - 等待输入字符 10 秒,还是在按下某个键时提前继续?

c - adc 频率与精度

html - 服务器显示文本而不是 HTML

html - 为什么 dir ="rtl"会改变顺序,但只是有时?

在 Linux 中使用 C 创建一个文件

c - x64 兼容的 C 源代码