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日
  • 展开全部

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度