我正在C中編寫BCD(二進制編碼的十進制)並負責編寫不同的bcd函數。C中的BCD(二進制編碼的十進制)
我需要將整數i編碼到大小爲n的緩衝區char * s中。該函數在成功時返回0,在溢出情況下返回-1(編碼i需要大於n的緩衝區)。
下面是函數:int bcd_encode(int i, int n, char *s)
和樣本輸入:assert(bcd_encode(a, 128, s) == 0);
我寫的代碼功能bcd_encode並糾正我,如果我錯了,但我相信,在一個函數,只在函數如果你有一些func(char x[])
和字符func(char *x)
他們會是同樣的事情?所以你可以將它們看作一個char數組。如果它在函數定義之外char x[];
將是一個char數組,並且char *x;
將是一個指針。
int bcd_encode(int i, int n, char *s){
int j = 0;
s = itoa(i, s, n+1);
}
但是,這會返回一個警告「賦值使指針從整型不帶轉換」和一個未定義的itoa符號。我已經嘗試了幾種不同的變體,從
* s = itoa(i); s = itoa(i); s = itoa(i,s,n + 1);
任何幫助,將不勝感激。提前致謝!
也許你想在函數的最後返回一個`int`? – Peyman 2011-02-08 00:53:46
`itoa`僅適用於MSVC++(AFAIK)。這不是標準C. – 2011-02-08 00:54:29
這不是標準的C,但它被廣泛實施。 – payne 2011-02-08 01:12:09