显示打印出来的文本,就像它是由人写的一样(C)

显示打印出来的文本,就像它是由人写的一样(C),c,printf,C,Printf,如果可能的话,我想做的是idk,但既然我的老师说他会提高我的加州分,我就试试看 我有一系列的字符 char myArray[100] 要做的是一步一步地打印所有数组,就像一个人在写一样,一个字符,延迟,另一个,延迟,等等 我该怎么做 在循环中打印myArray[i]并执行某些操作?我可以考虑做一个循环,在它中断之前运行很多次,但这不是一个优雅的解决方案 thx提前如果您正在使用Windows,请使用睡眠功能。如果您使用的是Linux,请使用usleep函数。将此交给您的老师,以获得高分。注意:

如果可能的话,我想做的是idk,但既然我的老师说他会提高我的加州分,我就试试看

我有一系列的字符

char myArray[100]
要做的是一步一步地打印所有数组,就像一个人在写一样,一个字符,延迟,另一个,延迟,等等

我该怎么做

在循环中打印myArray[i]并执行某些操作?我可以考虑做一个循环,在它中断之前运行很多次,但这不是一个优雅的解决方案


thx提前

如果您正在使用Windows,请使用睡眠功能。如果您使用的是Linux,请使用usleep函数。

将此交给您的老师,以获得高分。注意:你可能会被要求解释它

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>

void my_delay (int millisec)
{
    clock_t start = clock(), end = start + (millisec*CLOCKS_PER_SEC/1000);
    while (clock() < end) ;
}

void stutter_write (char *string)
{
    int i, typos;

    while (*string)
    {
        // random delay
        my_delay (1+(rand() & 255));

        // randomly inject typos
        typos = 1+(rand() % 20);
        if (typos < 4)
        {
            for (i=0; i<typos; i++)
            {
                // wrong digit
                if (isdigit(*string))
                    putchar ((rand() % 10)+'0');
                else
                // random letter
                    putchar ((rand() % 26)+'a'+32*(rand() & 31 < 10));
                fflush (stdout);
                // wait for it ..
                my_delay (200+(rand() & 511));
            }
            // oh blast. backspace:
            while (typos--)
            {
                putchar (8);
                fflush (stdout);
                my_delay (100+(rand() & 127));
            }
        }
        // space, lowercase or number: fast
        if (*string == ' ' || islower(*string) || isdigit(*string))
        {
            my_delay (250);
        } else
        // uppercase: slightly slower
        if (isupper(*string))
        {
            my_delay (350);
        } else
        // some common symbols on keyboard: unshifted
        if (strchr("[]=-';.,/", *string))
        {
            my_delay (400);
        } else
        // all others are shifted and/or hard to find or something like that
            my_delay (600);
        putchar (*string);
        fflush (stdout);
        string++;
    }
}

int main (int argc, char **argv)
{
    int i,j;

    srand(0);   
    for (i=1; i<argc; i++)
    {
        if (i > 1) stutter_write (" ");
        stutter_write (argv[i]);
    }
    printf ("\n");
    return 0;
}
。。字符串将出现在您的控制台中,就好像是由一个狩猎和挑选打字员键入一样。调整延迟率以模拟更高级的打字员


模仿更自然的拼写错误要难得多。我写作时常见的拼写错误有:键入几个单词,仔细考虑,全部退格,然后键入其他内容;换位代替了什么,忘记了移位0代替了什么,错误的键盘行wbat代替了什么,键盘上的一个字符上移了ehat代替了什么,忘记了一个字符wat代替了什么。

从来没有听说过这个功能,这一切都是兼容的吗?我要做些调查
stutter Here is a long string, which will be output as typed by a human. No, really.