2 xy83138 xy83138 于 2016.05.05 09:22 提问

C++gets()函数求帮忙!!!作业交不上去了!!
#include<iostream>
#include<stdio.h>
#include"md5.h"
using namespace std;
int main(){
    char filename[200];   //文件名
    while(1){
    printf("Input file:");
    gets(filename);    //用get函数,避免scanf以空格分割数据,
    if (filename[0]==34) filename[strlen(filename)-1]=0,strcpy(filename,filename+1);  //支持文件拖曳,但会多出双引号,这里是处理多余的双引号
    if (!strcmp(filename,"exit")) exit(0);  //输入exit退出
    char* p=md5(filename);
    cout<<p<<endl;
    }
    return 0;
}

问题就是:
编译能够通过。
一输入文件位置名称,就停止运行。
图片说明

调试了一下,是运行完gets(filename)后就出错。

大神,求帮忙!!!!!!!!!!!!

3个回答

qq423399099
qq423399099   Ds   Rxr 2016.05.05 09:28
已采纳

崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。

代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

a821962997
a821962997   2016.05.05 09:54

https://www.logcg.com/archives/148.html 到这个博客了去看一下,gets函数不安全

havedream_one
havedream_one   2016.05.05 10:34

运行之后没出现你说的问题图片说明

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!