发布时间:2023-05-20 13:00
本文是想用来记载作为菜菜的初学者的自己解决这个问题的过程><
如果是想康康最终的代码,直接通过目录到达“风暴叒一次来临(正确的道路)就可以啦”~
如果在代码输入之后出现了“未加载 wntdll.pdb”,这个解决方法是在“风暴叕一次来临(正确的道路)”
ps,最终结果也只是能运行出来,但是会提示“twoSortString.exe 已触发了一个断点”
软件:Visual Studio 2017
C++程序设计(第3版)谭浩强,第六章习题第2题:输入3个字符串,按由小到大的顺序输出(要求用指针或引用方法处理)
开头添加#define _CRT_SECURE_NO_WARNING
参考C++中strcpy() 函数报错
参考浅谈 Run-Time Check Failure #2 - Stack around the variable ‘xxx’ was corrupted 的解决方法后意识到是在程序中的某个变量附近的内存被破坏了,这表示程序存在内存越界,通过排查也认识到是p出了问题,作为菜菜的初学者,我自认为机智地修改了p数组的大小
真好,无论是将20改为100,23还是50都是错的,表面笑嘻嘻,心里哭唧唧。不过,失败是成功之母嘛,决定找strcpy_s示例看看的我又打开了搜索网站
感谢strcpy_s函数,我找到了一种新的分配存储空间的方式
#include
#include
using namespace std;
void swap(char *p1, char *p2) {
char *p = new char[21];
strcpy_s(p, strlen(p) + 1, p1);
strcpy_s(p1,strlen(p1)+1,p2);
strcpy_s(p2, strlen(p2) + 1, p);
}
int main() {
char str1[20],str2[20],str3[20];
cout << "请输入三个字符串:" << endl;
gets_s(str1);
gets_s(str2);
gets_s(str3);
if (strcmp(str1, str2) > 0) {
swap(str1, str2);
}
if (strcmp(str1, str3) > 0) {
swap(str1, str3);
}
if (strcmp(str2, str3) > 0) {
swap(str2, str3);
}
cout<< "交换后的顺序为:" << endl;
cout << str1 << endl << str2 << endl << str3 << endl;
return 0;
}
这下总不能再有问题了趴><
我是万万没想到C++会偷袭我这个18岁的小姑凉
特喵地叕有新的问题(文章写于问题解决之后,实在不想重新安装一次VS2017截报错图了,问题描述如下)
在编译的过程中出现了一个对话框提示程序已经出现一个断点,然后跳转界面提示未加载 wntdll.pdb
参考vs编译出现未加载 wntdll.pdb
step1:点击调试中的选项
step2:右侧找到符号再在Microsoft符号服务器前点击打勾
等比较长的一段时间(我等了近二十分钟)之后就可以啦~