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 如何通过代码传输视频到亚马逊平台
  • ¥15 php查询mysql数据库并显示至下拉列表中
  • ¥15 freertos下使用外部中断失效
  • ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
  • ¥15 devserver配置完 启动服务 无法访问static上的资源
  • ¥15 解决websocket跟c#客户端通信
  • ¥30 Python调用dll文件输出Nan重置dll状态
  • ¥15 浮动div的高度控制问题。
  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题