鱼C论坛

 找回密码
 立即注册
查看: 2113|回复: 4

新手小白求c++源码

[复制链接]
发表于 2019-11-13 14:14:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
c++老师布置了一份作业
要求:
        所有代码写在主函数里,打开任意类型的文件,统计每种字节(0~255)的出现次数,按字节值从小到大的顺序,输出出现次数大于0的字节值及对应的出现次数
自己写的代码总是出错 ,求大佬们帮忙,给一份源码吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-13 15:06:00 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-13 15:10 编辑
#include <stdio.h>

int main(void)
{
        unsigned int d[256] , i , j , k , m                                              ;
        unsigned char c , fn[256]                                                        ;
        FILE * fp                                                                        ;
        printf("输入文件名:")                                                           ;
        scanf("%s" , fn)                                                                 ;
        for(k = 0 ; k < 255 ; k ++) d[k] = 0                                             ;
        if ((fp = fopen((char *) fn , "rb")) != NULL) {
                c = fgetc(fp)                                                            ;
                while(! feof(fp)) {
                        d[c] ++                                                          ;
                        c = fgetc(fp)                                                    ;
                }
                fclose(fp)                                                               ;
                for(k = 0 ; k < 255 ; k ++) {
                        if(d[k]) {
                                c = k                                                    ;
                                if(k < 32 || k > 127) c = '.'                            ;
                                printf("0x%02x - [%c] : %4u\n" , k , c , d[k])           ;
                        }
                }
        } else {
                fprintf(stderr , "\n\n")                                                 ;
                fprintf(stderr , "\t文件 : [%s] 不存在!\n" , fn)                        ;
                fprintf(stderr , "\n\n")                                                 ;
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-13 15:48:13 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-13 18:49:12 | 显示全部楼层
本帖最后由 bin554385863 于 2019-11-14 12:55 编辑
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
int main(int argc, char const *argv[])
{
    std::string fn;
    std::cout << "请输入要打开的文件" << std::endl; //文件名
    std::getline(std::cin, fn);                     //输入文件名
    std::fstream fstm(fn, std::ios::in);            //创建文件流对象并打开指定的文件
    char cstr[255];                                 //创建字符数组保存读取的结果
    fstm.read(cstr, 255);                           //读取文件
    std::string str(cstr);                          //用字符串数组初始化string对象
    fstm.close();
    std::cout << "原文件内容\n"
              << str << std::endl;
    std::sort(str.begin(), str.end(), std::less<unsigned int>()); //按ASCII骂大小排序
    size_t count = 1;                                             //计数器
    char c = str[0];                                              //比较标记字符
    std::cout << "排序后\n"
              << str << std::endl;
    for (size_t i = 1; i <= str.size(); i++)
    {
        if (c == str[i])
        {
            count++; //如果连续相等计数器+1
        }
        else
        {
            c = str[i]; //如果不等则赋值再次比较
            std::cout << str[i - 1] << "出现了" << count << "次" << std::endl;
            count = 1;
        }
    }

    return 0;
}
----------------------------------------------------------------------------------------
E:\Users\admin\Documents\VScode\Code\Test\text.txt
11234567890123456789aaaaaaaaaabbbbbbbbbbnnnnnnnnnn##########!!!!!!!!!!
--------------------------------------------------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.18363.476]
(c) 2019 Microsoft Corporation。保留所有权利。

E:\Users\admin\Documents\VScode>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-opzwlso0.dil --stdout=Microsoft-MIEngine-Out-wqhfq3xt.4kl --stderr=Microsoft-MIEngine-Error-wqx2zvpo.gis --pid=Microsoft-MIEngine-Pid-ifywa5mc.ttl --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi
请输入要打开的文件
E:\Users\admin\Documents\VScode\Code\Test\text.txt
原文件内容
11234567890123456789aaaaaaaaaabbbbbbbbbbnnnnnnnnnn##########!!!!!!!!!!
排序后
!!!!!!!!!!##########01112233445566778899aaaaaaaaaabbbbbbbbbbnnnnnnnnnn
!出现了10次
#出现了10次
0出现了1次
1出现了3次
2出现了2次
3出现了2次
4出现了2次
5出现了2次
6出现了2次
7出现了2次
8出现了2次
9出现了2次
a出现了10次
b出现了10次
n出现了10次


E:\Users\admin\Documents\VScode>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-13 22:03:43 | 显示全部楼层
bin554385863 发表于 2019-11-13 18:49
----------------------------------------------------------------------------------------
E:%users ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-4 21:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表