| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2649 人关注过本帖
标题:函数调用不成功
取消只看楼主 加入收藏
青紫墨
Rank: 2
等 级:论坛游民
帖 子:67
专家分:20
注 册:2016-8-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
函数调用不成功
这个程序的目的是:打开一个目录下的所有txt,分别显示每个txt的最大数,结果是文件打开失败要怎么改呢,各位大神帮帮忙啊!!
图片附件: 游客没有浏览图片的权限,请 登录注册


#include <io.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include<ctype.h>
 
using namespace std;
int Max();
int main()
{
    _finddata_t sFind;
    long lResult = 0;
     
    lResult = _findfirst("*.txt", &sFind);
    if (lResult == -1)
    {
        cout << "没有找到文件。" << endl;
        return 0;
    }
    int c;
    do
    {
        cout << sFind.name << endl;
        c=Max();
        //cout << sFind.size << endl;
        //cout << lResult << endl;
    }
    while(_findnext(lResult, &sFind) != -1);
    getchar();
    // 文件内容读取,得看内内容是什么样的了。
    return 0;
}
int Max()
{
    inline void makeitem(vector<int>& item,istringstream &in );
//int main()
//{
    string line;
    ifstream f("sFind.name");
    if(!f.is_open())
    {
        cout<<"error openfile"<<endl;return 1;
    }
    vector<int> item;
    vector<vector<int> > arr;
    int num=0;
    while(!f.eof())
    {
        int num=0;
        getline(f,line);
        if(line.empty())continue;
        istringstream input(line);
        item.clear();
        while(!input.eof())
        {
            input>>num;
            item.push_back(num);
        }
        arr.push_back(item);
    }
    f.close();
    //output arr
    for (int i=0;i<arr.size();i++)
    {   
        item=arr[i];
   
        for (int j=0;j<item.size();j++)
        {
         
            cout<<item[j]<<" ";
        
        }
   
        cout<<endl;
    }
    int max[]={0};
    for(int i=0;i<arr.size();i++)
    {
        for(int j=0;j<item.size();j++)
        {
            if(arr[i][j]>max[i])
            {
                max[i]=arr[i][j];
            }
        }
    cout<<max[i]<<" ";
    //cout<<endl;
    }
    int m=max[0];
    for(int i=0;i<item.size();i++)
    {
        m=(m>max[i]?m:max[i]);
        
    }
    cout<<m;
    return m;
    getchar();
}
搜索更多相关主题的帖子: include 
2016-08-22 01:03
青紫墨
Rank: 2
等 级:论坛游民
帖 子:67
专家分:20
注 册:2016-8-10
收藏
得分:0 
嗯嗯是改过的,我昨天粘贴的是我自己的写的没注意,今天早晨改过

来了,运行结果一

cout<<sFind.name是输出txt文件名,这个目录下不只一个txt,我每输出一次就调用子函数,但是打不开txt文件,我查了好多都得要路径,但是我的txt路径是显示器中显示的
2016-08-22 10:04
青紫墨
Rank: 2
等 级:论坛游民
帖 子:67
专家分:20
注 册:2016-8-10
收藏
得分:0 
程序目的是读出一个目录下的所有txt,并显示出哪个txt的哪个数最大





个是主函数#include <io.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include<ctype.h>
 
using namespace std;
int max();
int main()
{
    _finddata_t sFind;
    long lResult = 0;
     
    lResult = _findfirst("*.txt", &sFind);
    if (lResult == -1)
    {
        cout << "没有找到文件。" << endl;
        return 0;
    }
    int c;
    do
    {
        cout << sFind.name << endl;
        c=max();
        //cout << sFind.size << endl;
        //cout << lResult << endl;
    }
    while(_findnext(lResult, &sFind) != -1);
    getchar();
    // 文件内容读取
    return 0;
}
int max()



这个是子函数,上次你帮我改的


int max()
{
    vector<vector<int> > arr;
    // 数据读入
    {
        ifstream f( "sFind.name");//就是这里出问题了,显示failes to open the file
        if( !f )
        {
            cerr << "failed to open the file\n";
            return 1;
        }


        for( string line; getline(f,line); )
        {
            arr.push_back( vector<int>() ); // 如果你用的编译器符合C++11标准,此处最好用 emplace_back


            istringstream input(line);
            for( int num; input>>num; )
                arr.back().push_back( num );


            if( arr.back().empty() )
                arr.pop_back();
        }
    }


    // 数据显示
    for( size_t r=0; r!=arr.size(); ++r )
    {
        for( size_t c=0; c!=arr[r].size(); ++c )
            cout << '\t' << arr[r][c];
        cout << '\n';
    }


    // 求每行最大值
    for( size_t r=0; r!=arr.size(); ++r )
    {
        int maxvalue = arr[r][0];
        for( size_t c=1; c!=arr[r].size(); ++c )
            maxvalue = max( maxvalue, arr[r][c] );
        cout << maxvalue << '\n';
    }
    cout << endl;


    return 0;
}


(我现在电脑不能上网,只能用手机粘贴,代码比较乱,谅解哈,谢谢你)
2016-08-22 11:31
青紫墨
Rank: 2
等 级:论坛游民
帖 子:67
专家分:20
注 册:2016-8-10
收藏
得分:0 
回复 6楼 rjsp
我明白你的意思,你说我一直读出的是sFind.name这个文件,我的意思是,cout<<sFind.name会在显示器上显示一个txt的文件名(比如abc.txt),怎么把这个文件名填写到刚才ifstream f(" ")里面去,总之就是把这个文件
名怎么传过

2016-08-22 12:20
青紫墨
Rank: 2
等 级:论坛游民
帖 子:67
专家分:20
注 册:2016-8-10
收藏
得分:0 
回复 8楼 rjsp
嗯嗯看到了,不好意思啊,我以为是用字符串传过去的比如string之类的
谢谢你啊!
2016-08-22 14:10
青紫墨
Rank: 2
等 级:论坛游民
帖 子:67
专家分:20
注 册:2016-8-10
收藏
得分:0 
回复 10楼 rjsp
嗯嗯好的,非常感谢呢!嘿嘿
2016-08-23 09:22
快速回复:函数调用不成功
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023992 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved