我想把我的端口號作爲const char *發送給一個函數。接收時的內存地址超出範圍。有人可以告訴我什麼是這樣做的正確方法?發送const char到一個函數並且超出範圍
這是我的代碼
在main()
socket_open("host", 12345); // host and port number
在功能方面
socket_open(char * host,int port) {
int error;
struct addrinfo hints;
struct addrinfo *res;
...
error = getaddrinfo(host,(char *)port,&hints,&res);
我得到的getaddrinfo分割。看起來12345對char *來說太大了。我應該如何解決這個問題?
1.看起來不像代碼中的任何問題。我建議包含更多的代碼。 2.當你從int類型轉換爲char *類型時,不會因爲兩者的尺寸相同而導致精度或數據丟失(由於它們都是內部的int)。所以'超出範圍'int可能不是問題。 –
您不能將'int'強制轉換爲'char *'並將其傳遞給期望終止字符串的函數。並且加重傷害,你傳遞的「暗示」是完全不確定的(即你從未填滿過,並且被垃圾填滿)。 [getaddrinfo()']的文檔(http://linux.die.net/man/3/getaddrinfo)可能值得一讀。 – WhozCraig