#include <time.h>
int perm_table[255];
float rand_vectors[255][3];
initialize_random_numbers()
{
int i;
float tmp[3], length;
for (i=0; i<255; i++)
{
perm_table[i] = rand() % 255;
tmp[0] = (float)(rand() % 1000);
tmp[1] = (float)(rand() % 1000);
tmp[2] = (float)(rand() % 1000);
printf("\n%i", i);
memcpy(rand_vectors[i], tmp, sizeof(float)*3);
}
}
在发出分段错误之前,运行此操作会打印从0到 253 (在255上)的每个数字。
评论此行
perm_table[i] = rand() % 255;
删除错误。
我完全被这个打败了。有什么帮助吗?
答案 0 :(得分:3)
这段代码对我来说没有错。
在函数返回后,可能会出现的段错误,而不是因为这个函数。
打印的最后一个数字是253
的事实是因为之后没有刷新流
printf("\n%i", i);
并且因为在函数之后发生了段错误,所以流永远不会被刷新。
默认情况下,当连接到终端时,stdout
是行缓冲的。要刷新stdout
,请拨打fflush(stdout)
或打印'\n'
个字符。
答案 1 :(得分:0)
我打赌将在printf声明中。
尝试将其修改为:
printf("%d\n"); // basically having the \n in the end.
有时你看不到屏幕上的输出,因为它仍然在printf的缓冲区中。 \n
确保清除缓冲区。