-3

为什么我得到分段错误?你能给我一些理解的解释吗?提前致谢。

#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;
}
4

1 回答 1

2

您没有为 分配内存ips[i]sprintf也没有为您分配内存。在第一个for循环中添加一行,在sprintf

ips[i] = malloc(sizeof(ip)+sizeof(port)+2);

编辑:正如 huseyin tugrul buyukisik 所指出的,port它不足以容纳 4 个字符一个空终止符。你也应该使用%s它的修饰符作为port一个字符串。

于 2013-07-04T18:45:35.893 回答