Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C阵列打印分割错误?_C_Pointers_Printf - Fatal编程技术网

C阵列打印分割错误?

C阵列打印分割错误?,c,pointers,printf,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

为什么我会犯错?你能给我一些可以理解的解释吗?提前谢谢

#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;
}
#包括
int main()
{
int i,j;
char*ips[1000];
字符ip[15]=“192.34.132.52”;
字符端口[4]=“4003”;
对于(i=0;i<10;i++){
sprintf(ip[i],%s:%d],ip,端口);
}
对于(j=0;j<10;j++){
printf(“[%d]=%s\n”,j,ips[j]);
}
返回0;
}

您没有为
ips[i]
分配内存,这不适合您。在
sprintf
之前的第一个
for
循环中添加一行:

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

编辑:正如huseyin tugrul buyukisik所指出的,
端口
不够大,无法容纳4个字符和一个空终止符。您应该为它使用
%s
修饰符,因为
端口
也是一个字符串。

这个代码有很多错误。。。我甚至不知道从哪里开始。您正在尝试修改只读常量,但在您使用调试器并查看问题所在之前,谁能知道呢。此外,端口[4]有4个字符,但没有null空间来对其结尾进行签名。很好地发现,正在编辑。
%d
端口lol的修饰符:d char-to-int转换器是必需的。1000个悬空指针和10个被分配到未定义的行为中:D:D>:c