tugouzhishen 2022-11-02 10:13 采纳率: 88.5%
浏览 75
已结题

关于C语言文本文件里查找字符追加的问题,如何解决?

问题遇到的现象和发生背景

有一个追加的问题,请问怎么处理,原题链接

用代码块功能插入代码,请勿粘贴截图

原题链接

#include <stdio.h>[]()
int main()
{
    char path[255];
    gets(path);
    int t[255]={0};
    char ch;
    FILE* fp;
    fp=fopen(path,"r");
    if(fp==NULL)
    {
        printf("文件打开失败!\n");
        return 0;
    }
    else
    {
        while(fscanf(fp,"%c",&ch)==1)
        {
            t[ch]++;
            printf("%c",ch);
        }
    }
    fclose(fp);
    printf("\n");
    for(int i=0;i<255;i++)
    {
        if(t[i]>0&&i>=32)
        {
            if(i==32) printf("%s: %d\n","0x20",t[i]);
            else printf("%c: %d\n",i,t[i]);
        }
    }
    return 0;
}

我的解答思路和尝试过的方法

想要把最后 算的次数也就是t[i]那块按照从小到大的顺序排序,一开始想到将最小的数与t[0]对换;再将t[1]~t[n]中最小的数与t[1]对换……每比较一轮,找出一个最小的,共比较n-1轮这么做,结果前面的字符没排序就错了,后来想到将字符和符号“:”还有次数放到一个结构体里,把次数单独排序这种方法,但是不会写,请各位帮忙写一下。

我想要达到的结果

把次数从小到大排序

  • 写回答

4条回答 默认 最新

  • 快乐鹦鹉 2022-11-02 10:34
    关注

    你意思是重新排序后,次数与字符对应不上了呗?
    再定义一个数组记录所有字符,和t数组一一对应,排序过程中同步进行交换就行了。

    char c[255];
    for(int i=0;i<255;i++)
        c[i] = i;
    for(int i=0;i<254;i++)
      for(int j=0;j<254-i;j++)
      {
           if(t[j] > t[j+1])
           {
               int n = t[j];
               t[j] = t[j+1];
               t[j+1] = n;
               char t = c[j];
               c[j] = c[j+1];
               c[j+1] = t;
           }
      }
    for(int i=0;i<255;i++)
    {
        if(c[i] < 32)
            continue;
        if(c[i] == 32)
            printf("0x20:%d\n",t[i]);
        else
            printf("%c:%d\n",c[i],t[i]);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月4日
  • 已采纳回答 11月2日
  • 赞助了问题酬金15元 11月2日
  • 修改了问题 11月2日
  • 展开全部

悬赏问题

  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算