C阵列打印分段错误?

时间:2013-07-04 18:43:04

标签: c pointers printf

为什么我会收到分段错误?你能给我一些不可解释的解释吗?提前谢谢。

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

1 个答案:

答案 0 :(得分:2)

您没有为ips[i]分配内存,sprintf没有为您执行此操作。在for

之前的第一个sprintf循环中添加一行
ips[i] = malloc(sizeof(ip)+sizeof(port)+2);

编辑:正如huseyin tugrul buyukisik所说,port不足以容纳4个字符一个空终结符。你应该使用%s修饰符,因为port也是一个字符串。