为什么我会收到分段错误?你能给我一些不可解释的解释吗?提前谢谢。
#include <stdio.h>
int main()
{
int i,j;
char* ips[1000];
char ip[15] = "192.34.132.52";
char port[4] = "4003";
for (i = 0; i < 10; i++) {
sprintf(ips[i], "%s:%d", ip, port);
}
for (j = 0; j < 10; j++) {
printf("[%d] = %s\n", j, ips[j]);
}
return 0;
}
答案 0 :(得分:2)
您没有为ips[i]
分配内存,sprintf
没有为您执行此操作。在for
:
sprintf
循环中添加一行
ips[i] = malloc(sizeof(ip)+sizeof(port)+2);
编辑:正如huseyin tugrul buyukisik所说,port
不足以容纳4个字符和一个空终结符。你应该使用%s
修饰符,因为port
也是一个字符串。