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