c - 为什么我在函数结束时出错?
问题描述
我在写我的 C 教程。
我有这个功能:
void sortString(char c[][5], int size) {
char temp[] = "";
for (int i = 0; i < size - 1; i++)
{
for (int j = 0; j < size - 1; j++)
{
if (strcmp(c[j],c[j+1]) > 0) //arr + j
{
strcpy(temp, c[j]);// only strcpy, assignment not works
strcpy(c[j], c[j + 1]);
strcpy(c[j + 1], temp);
}
}
}
}
外循环结束后和函数结束时出现此错误:
Run-Time Check Failure #2 - Stack around the variable 'temp' was corrupted.
知道为什么我在上面得到错误吗?
解决方案
从您提到的代码中几乎没有观察到。首先,这里
char temp[] = "";
temp
尺寸太小无法容纳c[j]
。让它足够大,以便它可以容纳c[j]
。例如
char temp[5] = "";
其次,冒泡排序内for
循环迭代不正确。而不是j < size - 1
使用j < size - i-1
.
推荐阅读
- git - 如何将新添加的分支从上游获取到原点?
- python - 为什么生产者-消费者不停止?
- docker - docker service create 永远不会返回
- linux - 收到邮件时运行 linux 脚本
- mysql - 查询差异
- subscription - 为什么 Subscription on Created 不适用于 Prisma?
- css - CSS 和 SCSS/SASS 变量中的自定义属性之间的区别
- mysql - Angular - 在 Zeppelin 中将动态表单内容插入数据库
- android - 创建为您提供位置的按钮 (Android Studio)
- go - 如何在 nats 中回复已接受的连接。在 golang 中订阅