我是一名初级程序员,通常可以解决自己的问题。这次我成功解决了问题,但仍然困扰着我。一个朋友建议我向社区寻求帮助。
我正在尝试在C语言中打印数字。我有一个使用sprintf的函数来实现这个功能。这些数字应该永远不会超过2位数,所以我使用了一个2字符缓冲区。但不知怎么的,这导致了一个无限循环,因为它修改了传递给sprintf的变量之一,但增加缓冲区大小可以解决这个问题。
以下是出错的代码:
一旦y达到2,它就会被重置为0,因此进入无限循环。将buf[2]更改为buf[8]可解决此问题。
我正在尝试在C语言中打印数字。我有一个使用sprintf的函数来实现这个功能。这些数字应该永远不会超过2位数,所以我使用了一个2字符缓冲区。但不知怎么的,这导致了一个无限循环,因为它修改了传递给sprintf的变量之一,但增加缓冲区大小可以解决这个问题。
以下是出错的代码:
#include <stdio.h>
void printarray(int array[][4]) {
int y;
int z;
char buf[2];
for (y=0; y<4; y++) {
for (z=0; z<4; z++) {
sprintf(buf, "%d", array[y][z]);
printf("buf is %s, y is %d and z is %d\n",buf,y,z);
}
}
}
int main() {
int arr[4][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,0} };
printarray(arr);
return 0;
}
一旦y达到2,它就会被重置为0,因此进入无限循环。将buf[2]更改为buf[8]可解决此问题。