带有特殊字符的c ++类型书写效果

时间:2014-04-08 15:01:20

标签: c++

我一直在研究一个控制台项目,它会逐个将字符打印到控制台中,给出类型写作效果。

我看过几个帖子,到目前为止已经提出了这个:

void printchar(char cal, int speed){
    char str[]={cal};
    int len = strlen(str);
    for(int i=0;i<strlen(str);i++){cout<<myStory[x]; Sleep(speed);}
}

void printmsg(char myStory[], int speed){
    for (unsigned int x=0; x<strlen(myStory); x++){cout << myStory[x]; Sleep(speed);}
}

int main()
{
    char cal[] = {178,177};
    printchar(cal,25);
    cout<<endl;
    printmsg("test",25);
    cout<<endl<<endl;
    return 0;
}

如果我这样做,我可以打印几个unicode字符

void printchar(char cal, int speed){
    char str[]={112,78,178,103,178,112};
    int len = strlen(str);
    for(int i=0;i<strlen(str);i++){cout<<myStory[x]; Sleep(speed);}
}

但是在打印出unicode之后我又得到了7个字符。

我想知道如何在没有附加字符的情况下打印unicode字符,并且还能够更改cal变量,以便我可以定义要在函数外部打印的字符。

如果我可以在不同的时间打印同一个函数中的unicode字符和字符串,那将是理想的。

1 个答案:

答案 0 :(得分:1)

您有几个错误,其中三个错误:

  • char str[]={cal};后跟strlen(str)调用,您有未定义的行为strlen函数查找字符串终止符'\0',您尚未将其添加到数组中。

  • 使用

    char cal[] = {178,177};
    printchar(cal,25);
    

    您使用char数组调用单个char的函数。

  • printchar函数中,您引用了未声明的myStory变量。

也可能存在其他问题。

编译时启用警告(如果您使用GCC或Clang至少添加-Wall选项),然后 读取 所有警告和错误消息。看看他们引用的线条。尝试了解错误和警告的含义。修复错误和警告的原因。在修复警告时,不要只是尝试通过简单的类型转换来隐藏它们,而是真的修复它们。如果您不明白为什么会得到错误和警告,那么您将永远不会成为程序员。