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 多谢 经过调试,问题已经找出来了,不是这个函数的问题,但是这儿还真是奇怪
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
一则count(*) count(1) 为啥没有走索引的遭遇
一个超级简单的语句 select count(1) from lixora ; 开发反馈很慢,走了全表扫描,并且反馈说该表上有3个单列索引 一般就2种原因:  1.统计信息不对 2.索引列为 nullable  当时先让开发的兄弟使用 index hint 强制走了下索引,速度飞快, 然后 再select count(lixora) from lixora ,发现也是走索引;
封装一个count函数,能实现如此调用:count(a)(b)(c)(d)(e)
function count(x){ var fn = function(y){ return count(x*y); } fn.toString = function(){ return x; }; return fn; }
sql中Count函数的用法
Count 函数 计算从查询返回的记录数。 语法 Count(expr) 其中 expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。expr 中的运算对象可能包括一个表字段名,一个常数或一个函数(可能是内在的,也可能是用户自定义的,但不是 SQL合计函数).您可以计算任何种类的数据,包含文本数据。 说明
c++中count函数的用法、cin>>hex>>a
一.count函数 algorithm头文件定义了一个count的函数,其功能类似于find。这个函数使用一对迭代器和一个值做参数,返回这个值出现次数的统计结果。 编写程序读取一系列int型数据,并将它们存储到vector对象中,然后统计某个指定的值出现了多少次。 核心代码: cout 二、cin>>hex>>a cin>>hex>>a,此时如果输入
SQL 查询count显示为0的结果
在SQL Server数据库查询中,为了对查询结果进行对比、分析,我们经常会用到GROUP BY子句以及COUNT()函数来对查询结果进行分类、统计等。但是我们在使用的过程中往往会存在一些问题,本文我们就介绍了一个问题,并给出了它的解决方案,接下来就让我们来一起了解一下这部分内容吧。 1.问题: 如下ExampleTable表,求各种类(CategoryID)满足Flag等于1
mysql的count函数统计错误问题
    使用mysql的时候需要用到count函数,但是发现count函数总是统计不正确。通过查询资料发现,count('任意内容')都会统计出所有记录数,因为count只有在遇见null时不计数,即count(null)==0,因此前者单引号内不管输入什么值都会统计出所有记录数。解决方法就是在条件的后面加上一个 or null...
Mysql中的count(*)的误解
有时候总认为count(*)会比count(1)或者count(column name)慢,其实这里面还是有个小坑的。让我们用一个例子来了解一下它们的区别:---初始化语句 create table test2 (id BIGINT PRIMARY key, name varchar(24))ENGINE=INNODB;insert into test2(id,name)values(1,null)
eclipse中运行c++控制台没输出
编译没报错,运行没输出,
问题解决:printf()函数无法打印
今天写聊天室项目,调试出了问题,查看了代码无法找到问题,于是用printf()逐行打印。 问题定位很快,然而发现打印到一半,就无法显示。进过排查,这不是程序的问题,而是printf()函数无法打印。 这个问题涉及到printf()输出缓冲的问题。 对于标准输出设备stdout,输出一般都有缓冲,当遇到刷新标志或缓冲满时才把缓冲的数据输出到标准输出设备中。 对于printf()函数,其使
linux下C程序printf没有立即输出的问题及我的Makefile文件
昨天在linux下运行一个C程序,是处理一段视频中的每一帧的,本来在程序中是要每处理完一帧就要输出一条信息的,但是在运行是却不显示,而是在程序运行完成之后一块输出的,但是在windows中运行程序就没有这个问题。如果是这样的话,就非常不爽了,因为本来是想通过程序的输出来得到程序当前的运行状况,现在却达不到这种效果。然后上网上搜索了一下,看来果然有解决方案。存在这个问题的主要原因就是在调用print