2014-04-08 15 views
0

我一直在研究一個控制檯項目,它將一個一個地打印字符到控制檯,賦予寫入效果類型。特殊字符的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);} 
} 

,但我得到一個額外的7個字符在unicode的打印之後或之後。

我想知道如何打印unicode字符沒有額外的,也能夠改變cal變量,所以我可以定義我想在函數外打印哪些字符。

如果我可以在不同的時間打印unicode字符和來自相同函數的字符串,那麼理想的是什麼。

回答

1

你有幾個錯誤,這裏是他們三個:

  • 隨着char str[]={cal};其次strlen(str)電話,你有未定義行爲strlen函數將查找未添加到數組的字符串終結符字符'\0'

  • 隨着

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

    你調用一個函數採用單個charchar數組。

  • printchar函數中,您引用了未聲明的myStory變量。

可能還有其他問題。

編譯時(如果你使用GCC或鏘添加至少-Wall選項)啓用警告,然後閱讀所有警告和錯誤消息。看看他們引用的線。嘗試瞭解錯誤和警告的含義。修復錯誤和警告的原因。當修復警告時,不要試圖通過簡單的類型轉換來隱藏它們,而是真的修復它們。如果你不明白你爲什麼會得到錯誤和警告,那麼你永遠不會成爲程序員。

+0

好的,我認爲ive幾乎得到它排序 void printchar(char cal,int speed){ char str [] = {cal}; int len = strlen(str); for(int i = 0; i NanoedStux

+0

@NanoedStux C中的所有字符串比其「長度」長一個字符,並且該額外字符是終結符字符「'\ 0''。因此,對於一個單字符的字符串,您可能需要'char str [] = {cal,'\ 0'};' –

+0

完美的工作,你有什麼建議,我可以把多個unicode值放入函數中? – NanoedStux