| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 833 人关注过本帖
标题:C。。。头疼死了。。求思路!!!求指导!!
取消只看楼主 加入收藏
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
结帖率:77.78%
收藏
已结贴  问题点数:10 回复次数:4 
C。。。头疼死了。。求思路!!!求指导!!
/*
程序 代号:0001

  功能:将文件1.txt中的数据按照重复次数降序去重整理


  步骤:


  版本 0.4
  {
  用二维数组~~
  大体恢复版本0.2思路
  }

  版本0.3
  {
  struck str
  {
  int namber;
  char str
  }
  1.不采用数组。。采用结构体。。这样没有了行数的限制
  缺陷:定义多个结构体变量。。占用大量空间。。况且还不能自动定义变量。。
  }




  版本 0.2
  {
     1.将数据排序(按ascill码排序)。。得数组一
     2.从数组一挨个读取字符串。如果和数组一下一个字符串相同,该字符串的数量就加一。。不同。就将该字符串赋值给数组二
  }


  版本 0.1
  {
   1.将每个字符串复制两份
   2.将第一组数据去重整理
   3.将第一组的第一个字符与第二组每个字符想比较。记下重复的次数
   4.按照重复的次数将第一组数据降序排序。。
   5.输出
  }

备注:

1.要用到结构体

2.文件打开读取的练习

3.字符串比较的练习

http://blog.代码有参考价值。。【while的结束字符判断】
*/



#include<stdio.h>
#include<process.h>


#define false -1
#define true 1


int main(void)
{
//功能变量区
    FILE *file;  //文件指针
    int fileh;   //文件行数
    char CO[100000000000000][100];//100000000000000可以编译通过。。不过提示。占用的内存超过256MB。。可能无法运行。。



//临时变量区
char a;
int i,j;
   
//打开文件
restart:
    system("cls");
    printf("       本程序将从1.txt文件中读取数据,并进行处理。\n    文件最多:100000000000000行\n单行字符个数最大为:100\n   ");
    getchar();

    file=fopen("1.txt","r");
    if(file==NULL)
    {
        printf("文件1.txt打开失败!请确定文件是否存在。");
        getchar();
        goto restart;
    } else{
        printf("文件1.txt成功打开。\n");
        getchar();
    }





//得出文件行数,判断是否能处理
    fileh=0;
    while((a=fgetc(file))!=EOF)
    {
        if(a=='\n')
        {
            fileh++;
        } else{
        a=fgetc(file);
        if(a==EOF)
        {
            fileh++;
            break;
        }
        }
    }



//开始录入数据《《《就是这一段。。求指导~~!!》》》
    for (i=0;i<(fileh+1);i++)
    {

        fgets(CO[i],100,file);
        printf("刚刚读取的是第%d行数据,内容为%s\n",i,CO[i]);
        getchar();
    }



}



求指导!!求思路!!

     QQ1041501142

欢迎加好友。。。另外。。自己新建了一个QQ群。。喜欢研究语言的可以加入。。为了避免发广告的嫌疑。。就步伐群号了。。
搜索更多相关主题的帖子: 结构体 字符串 空间 
2014-02-05 23:34
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
收藏
得分:0 
就是对数据进行排序。。排序的规则是按照重复的次数降序排列。。。然后把重复的部分去除。。。

例:
原来:
1
23
45
XCA
23
23
45
23
XCA
XCA
整理后:
23
XCA
45
1
2014-02-05 23:49
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
收藏
得分:0 
回复 3楼 zuifei07
如果先建立链表。。然后那单词去表里一个一个的对照的话。。岂不是要做很多次的比较。。中间还要穿插赋值啥的。。。
这样效率是不是就小很多了。。

这样怎么样?
先把数据排序。。然后再统计每个字符串出现的次数。。然后按照次数排序?
FILE *file;
char cc[10000][100];
int fileh;
int i;
struct zf
{
char str[30];
int namber;
};


file=fopen("1.txt","r+");
if (file!=NULL){
printf("Can not open file~\n");
} else{
//得出文件行数,判断是否能处理
    fileh=0;
    while((a=fgetc(file))!=EOF)
    {
        if(a=='\n')
        {
            fileh++;
        } else{
        a=fgetc(file);
        if(a==EOF)
        {
            fileh++;
            break;
        }
        }
    }




/*这一段是赋值。。但是printf("cc[%d]:%s",i,cc[i]);后。。输出结果是乱码。。求解决~!!!1就是这个地方。。。换fread fscanf fgets 都是乱码。。。。
*/
for (i=1;i<fileh;i++)
{
fread(cc[i],sizeof(char),100,file);
printf("刚刚读取的是第%d行数据,内容为%s\n",i,cc[i]);//这里输出是乱码。。

}
}



曾经在for循环内尝试过定义 struct zf cc[i]
然后 cc[i].str 是字符串。。cc[i].namber是这个字符串出现的次数。。

但是编译通过后。。。不是提示堆笺溢出。。就是 内存占用可能超过256MB。。不能运行。。。。。

求好的思路。。


2014-02-06 13:06
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
收藏
得分:0 
好了。。。
已经通过各位大神网友解决了。。。。


解决的方法是。。
在开始录入数据那一段的前面 也就是统计完行数后。。
加一句。。
fseek(file,0,SEEK_SET); 将文件指针移到文件开头。。。因为统计完行数后。。指针移到了文件末尾。。。


还有歌问题。。


 /*  这段统计代码。。会统计到文件中间会直接退出。。
 fileh=0;
    while((a=fgetc(file))!=EOF)
    {
        if(a=='\n')
        {
            fileh++;
        } else{
        a=fgetc(file);
        if(a==EOF)
        {
            fileh++;
            break;
        }
        }
    }
*/  不指导什么原因。。 求指导!!



下面这段代码就可以完整的统计行数。。。。。
//得出文件行数,判断是否能处理
    fileh=0;
    while((a=fgetc(file))!=EOF)
    {
        if(a=='\n')
        {
            fileh++;
        }
        
    }
    fileh++;

2014-02-07 00:10
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
收藏
得分:0 
多谢各位。。互相学习吧~~
2014-02-28 23:42
快速回复:C。。。头疼死了。。求思路!!!求指导!!
数据加载中...
 
   



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

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