2 u013084907 u013084907 于 2017.01.03 20:18 提问

c++ 为什么不输出count,函数就崩了?

代码如下:

void ListPath(string path, list& files)
{
//文件句柄
long hFile = 0;
int count=0;
//文件信息
struct _finddata_t fileinfo;
string p;
if((hFile = _findfirst(p.assign(path).append("\*").c_str(),&fileinfo)) != -1)
{
do
{
count++;//这一行注释掉没事
cout<<count<<endl;//这一行注释掉程序崩了
if((fileinfo.attrib & _A_SUBDIR))
{
if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)
{
ListPath( p.assign(path).append("\").append(fileinfo.name), files );
}
}
else
{
int len=strlen(fileinfo.name);
if(fileinfo.name[len-1]=='t'&&fileinfo.name[len-2]=='x'&&fileinfo.name[len-3]=='t'&&fileinfo.name[len-4]=='.')
{
ifstream filein(StringToChar(p.assign(path).append("\").append(fileinfo.name)));
stringstream buffer;
buffer<<filein.rdbuf();
string source(buffer.str());

                    if(KMP(source))
                    {
                        files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
                    }
                }
            }
        }
        while(_findnext(hFile, &fileinfo)  == 0);
        _findclose(hFile);
    }
}

1个回答

u010136832
u010136832   2017.01.04 09:26
已采纳

这是你的代码吗?上面的没对齐,如果是吗,那么具体崩溃的时候有没有报什么错误?

 void ListPath(string path, list& files)
{
    //文件句柄
    long hFile = 0;
    int count=0;
    //文件信息
    struct _finddata_t fileinfo;
    string p;
    if((hFile = _findfirst(p.assign(path).append("\*").c_str(),&fileinfo)) != -1)
    {
        do
        {
            count++;//这一行注释掉没事
            cout<<count<<endl;//这一行注释掉程序崩了
            if((fileinfo.attrib & _A_SUBDIR))
            {
                if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)
                {
                    ListPath( p.assign(path).append("\").append(fileinfo.name), files );
                }
            }
            else
            {
                int len=strlen(fileinfo.name);
                if(fileinfo.name[len-1]=='t'&&fileinfo.name[len-2]=='x'&&fileinfo.name[len-3]=='t'&&fileinfo.name[len-4]=='.')
                {
                    ifstream filein(StringToChar(p.assign(path).append("\").append(fileinfo.name)));
                    stringstream buffer;
                    buffer<<filein.rdbuf();
                    string source(buffer.str());
                    if(KMP(source))
                    {
                        files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
                    }
                }
            }
        }while(_findnext(hFile, &fileinfo)  == 0);
        _findclose(hFile);
    }
}
u013084907
u013084907 多谢 经过调试,问题已经找出来了,不是这个函数的问题,但是这儿还真是奇怪
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!