| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1279 人关注过本帖
标题:求各位高手指点,怎样间隔读取
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
#include <Windows.h>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <conio.h>

int get_statistics(FILE* file, const int length, const int interval);

int main(int argc, char* argv[])
{
    if (argc < 2)
    {
        printf_s("命令行格式: %s <文件名>\n", strrchr(argv[0], '\\') + 1);
        _getch();
        return EXIT_FAILURE;
    }

    const char* filename = argv[1];

    FILE* file;
    errno_t error = fopen_s(&file, filename, "rb");
    if (error != 0)
    {
        printf_s("文件 %s 打開失敗!Error Code = %d\n", filename, GetLastError());
        _getch();
        return EXIT_FAILURE;
    }
    for (int i = 2; i <= 8; ++i)            // 模體長度
    {
        for (int j = 1; j <= 3; ++j)        // 間隔數
        {
            printf_s("以 %2d 為間隔的 %2d 聨體出現次數 = %d\n", j, i, get_statistics(file, i, j));
        }
    }
    fclose(file);

    printf_s("Press any key to continue...");
    _getch();

    return EXIT_SUCCESS;
}

int get_statistics(FILE* file,const int length, const int interval)
{
    int number = 0;

    char* buffer = new char[max(interval, length)];
    rewind(file);
    if (fread(buffer, sizeof(char), length, file) == length)
    {
        ++number;
        while (fread(buffer, sizeof(char), interval, file) == interval)
        {
            ++number;
        }
    }
    delete[] buffer;

    return number;
}



[ 本帖最后由 TonyDeng 于 2014-4-22 17:32 编辑 ]

授人以渔,不授人以鱼。
2014-04-22 17:16
快速回复:求各位高手指点,怎样间隔读取
数据加载中...
 
   



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

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