C语言 无法从字符串复制ip地址到sockaddr_in



我正试图将IP地址从字符串复制到结构体sockaddr_in,但不知何故出现了一些错误。

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
    char *buf = "128.10.25.102:30015";
    char ip[30];
    struct sockaddr_in s1_addport;
    int i = 0;
    while (buf[i] != ':') i++;
    strncpy(ip, &buf[0], i);
    ip[strlen(ip)] = '';
    printf("ip: %s, strlen:%zun",ip,strlen(ip));
    inet_aton(ip,&s1_addport.sin_addr);
    printf("Server IP: %sn",inet_ntoa(s1_addport.sin_addr));
    return 0;
}
以上代码的输出显示:
ip: 128.10.25.102, strlen:13  
Server IP: 0.0.0.0

ip字符串复制值有一些错误,我无法弄清楚。原因是什么呢?

这是您的pastebin代码中的问题:

ip[strlen(ip)]='';

(尝试添加空终止符,但使用strlen,它本身取决于null终止符的存在)。

修复:

....
while(buf[i]!=':')
    i++;
strncpy(ip,&buf[0],i);
ip[i]='';
puts(ip);
....

相关内容

  • 没有找到相关文章

最新更新