两个办法,一个是 scanf_s 代替 scanf
一个是代码最最上面加入一句宏定义:#define _CRT_SECURE_NO_WARNINGS
你把报错的英文翻译成中文好好看看就知道了,这个不影响的
数组a没有初始化,里面是些随机数,所以你判断a[count]==0就break,里面很可能根本就不是0
当n很小而k很大时,素数个数不足k个,此时就有bug了
void DisplayBoard(char borad[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
int j = 0;
for (j = 0; j < col; j++)
{
printf(" %c ", borad[i][j]);
if (j < col - 1)
{
printf("|");
}
}
printf("\n");
if (i < row - 1)
{
for (j = 0; j < col; j++)
{
printf("---");
if (j < col - 1)
printf("|");
}
printf("\n");
}
}
}
首先,程序得分总是少10分的问题需要具体分析程序才能得出答案,需要查看代码和分数计算的逻辑才可以找到具体的问题和解决方案。
其次,警告信息"变量或函数不安全"一般是指使用了不安全的函数,如strcpy等,可能会存在缓冲区溢出等安全问题。可以使用更安全的函数替代,如strncpy等。如果确定没有使用不安全的函数,可以忽略该警告,或者添加编译选项来关闭该警告。
以下是使用strncpy替代strcpy的示例代码:
char dest[20];
char src[10] = "hello";
strncpy(dest, src, sizeof(dest));
如果没有找到代码中的问题,可以考虑使用调试工具来调试程序,找出具体的问题所在,并提出修改方案。常用的调试工具有VSCode,Visual Studio等。
最后,根据程序的实际情况,可以考虑使用静态分析工具来检测程序中的安全问题,如Coverity等。