我一直在研究一个控制台项目,它会逐个将字符打印到控制台中,给出类型写作效果。
我看过几个帖子,到目前为止已经提出了这个:
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字符和字符串,那将是理想的。
答案 0 :(得分:1)
您有几个错误,其中三个错误:
char str[]={cal};
后跟strlen(str)
调用,您有未定义的行为。 strlen
函数查找字符串终止符'\0'
,您尚未将其添加到数组中。
使用
char cal[] = {178,177};
printchar(cal,25);
您使用char
数组调用单个char
的函数。
在printchar
函数中,您引用了未声明的myStory
变量。
也可能存在其他问题。
编译时启用警告(如果您使用GCC或Clang至少添加-Wall
选项),然后 读取 所有警告和错误消息。看看他们引用的线条。尝试了解错误和警告的含义。修复错误和警告的原因。在修复警告时,不要只是尝试通过简单的类型转换来隐藏它们,而是真的修复它们。如果您不明白为什么会得到错误和警告,那么您将永远不会成为程序员。