2014-01-09 55 views
-1

好吧,我有一個函數來檢查一個數字是否是一個迴文(尚未完成),它調用一個名爲copystring()的函數。複製字符串函數不工作在C

如果我有

putchar(*destination) 

copystring()功能循環,它輸出的目標字符串,因爲它應該。 但是,is_palindrome函數中的原始字符串未被編輯。它仍然是空白的。爲什麼會發生這種情況,我該如何解決?

int is_palindrome(int num) 
{ 
    char buffer[30]; 
    char reversebuffer[30]; 
    sprintf(buffer, "%d", num); 

    copystring(reversebuffer, buffer); 
    reversestring(reversebuffer, strlen(reversebuffer)); 
} 

void copystring(char *destination, char *source) 
{ 
    while (*source){ 
     *destination = *source; 
     ++source; 
     ++destination; 

    } 
    *destination = '\0'; 
} 
+1

爲什麼你不使用標準的'strcpy()'? – Barmar

+7

發佈'reversestring()'的源代碼或確保該錯誤不在該函數中。 'copystring()'適合我。 – svk

+1

你指的是哪一個_original string_?緩衝區還是反向緩衝區?是什麼讓你覺得它是空白的?展示你的代碼來證明這一點。 – Barmar

回答

-1

在複製串()的端部起作用目標和源指針被指向「\ 0」字符,因此,如果呼叫的putchar(*目的地)或的putchar(*源),它們將打印空白。

+0

putchar()在* destination = * source之後的循環內 –

1

我不明白這個問題,它對我很好。無論如何,你正在努力工作。如果寫下類似的東西會更有效率:

bool is_palindrome2(int num) 
{ 
    char buffer[30]; 
    sprintf_s(buffer, "%d", num); 
    int length = strlen(buffer); 

    for(int i=0; i < length/2 ; i++) 
    { 
     if(buffer[i] != buffer[length - i - 1]) 
      return false; 
    } 

    return true; 
}