我必須始終執行我的函數。我無法使用標準庫。C++函數中的類型錯誤值始終爲NULL
My_cpy,my_len和my_strdup函數在這裏。請爲我檢查。我認爲這很容易,但我對這個功能有問題。我在頁面末尾顯示錯誤。我認爲這很清楚。另外這是C++
非常感謝。
代碼:
void my_cpy(char* dest, const char* src) {
int i = 0;
while (src[i] != '\0') {
dest[i] = src[i];
i++;
}
dest[i] = '\0';
}
int my_len(const char* p) {
int c = 0;
while (*p != '\0')
{
c++;
*p++;
}
return c;
}
char *my_strdup(const char *s) {
char* d = malloc(my_len(s) + 1); // Space for length + null
if (d == NULL) return NULL; //No memory
my_cpy(d, s); // Copy the characters
return d; // Return the new string
}
我對這個功能的錯誤。我怎麼解決這個問題?
錯誤(有效)類型的值 「無效*」 不能被用於初始化 類型的實體 「字符*」
`Error C2440 'initializing': cannot convert from 'void *' to 'char *'`
我寫:
char* d = (char*) malloc(my_len(s) + 1)
但現在問題在p。始終爲NULL。
這是C還是C++? –
這是C++。也許以後我會用C –
@UgurBaki從語法上講,這可能是C++,但它在風格上肯定不是C++。你爲什麼要模仿一個像'strdup'這樣的函數? 'std :: string'有什麼問題,或者如果你想學習一些東西,創建你自己的字符串類? – PaulMcKenzie