2017-07-12 55 views
0

我試圖不斷地將char添加到字符串的末尾。我通過運行該這樣做我的主使用strcat時添加的隨機空格

char String[256]; 
char alphabets[26] = "abcdefghijklmnopqrstuvxyz"; 
for (int i = 0; i < 257; i++) { 

      char newChar = alphabets[indexOfNewChar-1]; 
      printf("new char = %c\n",newChar); 
      strcat(String,&newChar); 

      printf("%s\n",String); 
} 

,當我跑這堆代碼,這是印刷 new char = b bkhobtj dfhhai bbdhgfcafgcfi bbaccfeai afebaci aedgdddai hei hfedhbi dabeedbi i cfhi i caddbhgbi i acfi cehbhcddcahbhbabi aaadi hi ffhhccbccfbbfggfdhebgeacecai cefdcdb

正如你可以看到有空間和新線路在運行過程中隨機出現。 實現這些隨機空間的出場後,我試圖用

char* removeSpaces(char* input) 
{ 
    int i,j; 
    char *output=input; 
    for (i = 0, j = 0; i<strlen(input); i++,j++) 
    { 
     if (input[i]!=' ') 
      output[j]=input[i]; 
     else 
      j--; 
    } 
    output[j]=0; 
    return output; 
} 

但是去掉空格,這並沒有真正影響結果由於還有空白的外觀。我怎樣才能刪除這些空格或更好地阻止它們出現。 在旁註中,代碼在for循環的160次重複後終止。我該如何克服這一點。

+1

1)'char String [256];' - >'char String [256] =「」;'或'char String [256]; * String = 0;' – BLUEPIXY

+0

2)'i < 257;' -->'i BLUEPIXY

+1

3)'strcat(String,&newChar);' - >'strncat(String,&newChar,1);' – BLUEPIXY

回答

2

newChar是單個char; &newChar而不是一個字符串。一個字符串需要一個空終止符; strcat正在尋找一個,並連接它找到的迷路角色,直到它找到一個(雖然這是未定義的行爲,所以它可能導致程序崩潰)。

+0

非常感謝。現在它工作得很好 –