我正在制作一个TCP服务器和客户端,作为服务器程序的一部分,它需要在函数调用时使用一个IPv4地址和端口号作为参数.
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netdb.h>
#include <string.h>
int main(int argc, char *argv[]) {
if (argc != 3) {
fprintf(stderr, "Error: Incorrect number of arguments.\n");
return -1;
} else {
fprintf(stdout, "Arguments good\n");
}
char *ip;
memset(ip, 0, sizeof(char) * 15);
ip = malloc(sizeof(char) * 15);
strcpy(ip, argv[1]);
int portNo = atoi(argv[2]);
fprintf(stdout, "IP: %s Port: %d\n", ip, portNo);
free(ip);
return 0;
}
然而,当我在终端(./myServer 127.0.0.1 50000
)中编译并运行它时,我得到bus error: 10
我假设我在为IP分配内存或将argv[1]复制到IP中做了一些错误的事情,但我还不能弄清楚是什么.