2014-03-27 323 views
1

嗨我想創建一個由只有下劃線和空格組成的字符數組。函數遊戲需要一個字符數組,並創建一個新的數組,並將所有字符轉換爲下劃線和空格因爲他們是例如堆棧將是_ _ _ _ _。隨機尾隨字符在C中打印一個字符串

它確實工作到一個點,我得到所有的下劃線,但我得到隨機字符結尾的數組我是新來的C,所以如果任何人都可以看到哪裏發生了錯誤,將不勝感激。

int game(char p[]) 
{ 
int length = strlen(p); 

int newLength = length * 2; 
newLength = newLength +1; 
char display[newLength]; 
InitializeArray(display,newLength); 

for(int i = 0;i<=length-1;i++) 
{ 

    if(p[i]==' ') 
    { 

     display[i*2]=' '; 
    } 
    else 
    { 
     display[i*2] = '_'; 
    } 


} 
} 



int InitializeArray(char Array[], int Length) 
{ 
    int i; 

    for (i = 0; i < Length-1; i++) 
    { 
     printf("%i",i); 
     Array[i] = ' '; 
    } 
} 
+0

我不知道了'在你的2個函數中,Length是相同的意思,但很明顯'for'中的條件是不同的(一個是<=',另一個是'<')。那是爲什麼? –

回答

1

始終用一個「\ 0」,或0x00時,字符終止你的字符串,這是用於識別一個字符串的末尾的約定(strlen的,printf的等,需要的話)。

1

字符數組的末尾必須有一個NULL字符'\ 0'。

3

替換:

int InitializeArray(char Array[], int Length) 
{ 
    int i; 

    for (i = 0; i < Length-1; i++) 
    { 
     printf("%i",i); 
     Array[i] = ' '; 
    } 
} 

通過:

int InitializeArray(char Array[], int Length) 
{ 
    int i; 

    for (i = 0; i < Length-1; i++) 
    { 
     printf("%i",i); 
     Array[i] = ' '; 
    } 
    Array[Length - 1] = '\0'; 
} 

因爲所有的字符串必須由字符 '\ 0' 結束,這是一個慣例。它存在什麼?允許開發人員知道字符串的結束位置。

如果您需要了解更多信息,歡迎您:)

1

我不明白你的目的很好,但我認爲這個問題是關於「\ 0」