| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 556 人关注过本帖
标题:请写个字符统计函数
只看楼主 加入收藏
wk940827
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2010-12-9
结帖率:87.5%
收藏
已结贴  问题点数:10 回复次数:4 
请写个字符统计函数
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
 
int lines;//文件的长度也是数组的行数
 char **array;


char  **text_2_array(const char *filename)
{
  char *p;
  int f_size;

  if(filename == NULL) return NULL;

  FILE *fp = fopen(filename, "rb");
  if(fp == NULL) return NULL;

  fseek(fp, 0L, SEEK_END);
  f_size = ftell(fp);
  //printf("%d\n",f_size);
  fseek(fp, 0L, SEEK_SET);  

  char *buf = (char *) calloc(f_size, sizeof(char));
  if(buf == NULL) return NULL;

  fread(buf, sizeof(char), f_size, fp);
  fclose(fp);

 
  for(p=strchr(buf, '\n'), lines=1; p!=NULL; p=strchr(p, '\n'), lines++)
   {
    if(*p == '\n') p++;
  }


  array = (char **) calloc(lines+1, sizeof(char*));
  array[0] = buf;
  for(p=strchr(buf, '\n'), lines=1; p!=NULL; p=strchr(p, '\n'))
   {
    if(*p == '\n') *p++ = '\0';
    if(p != NULL) array[lines++] = p;
  }

  array[lines] = NULL;
  //printf("%d\n",lines);
  return array;  
  }


这个函数的要求就是对array分别进行每列最后一个字符出现次数的统计。




/******************主函数******************/

int main()
{

     FILE *out;
    out=fopen("out.txt","w+");
   
    text_2_array("in.txt");
/************** 插函数处 **************/   
    fclose(out);
    return 0;
}
/*******************in.txt**********************/
1235ftgh
3595trlo
1548gjol
2159dser
2548ghyu
2458gtyh
6981wedb
1269fdvt
1489hygg
5896dews
4719hygf
8536fred
5874hygb
9874kiuj
6954gtrf
2147gtff
5841hhyt
erft4589
gtyh5874
gred9872
iolp2536
aswd2154
erfg5843
hyjk1203
xswz1025
5462dwsa
52148693
kjhgy415
4789652k
01235lkh
1458lkiu
2541lyre
9841hgtr
2013hytg
1489hrfd
4715kjun
698kjhyu
1235ftgh
3595trlo
1548gjol
2159dser
2548ghyu
2458gtyh
6981wedb
1269fdvt
1489hygg
5896dews
4719hygf
8536fred
5874hygb
9874kiuj
6954gtrf
2147gtff
5841hhyt
erft4589
gtyh5874
gred9872
iolp2536
aswd2154
erfg5843
hyjk1203
xswz1025
5462dwsa
52148693
kjhgy415
4789652k
01235lkh
1458lkiu
2541lyre
9841hgtr
2013hytg
1489hrfd
4715kjun
698kjhyu
2548ghyu
2458gtyh
6981wedb
1269fdvt
1489hygg
5896dews
4719hygf
8536fred
5874hygb
9874kiuj
6954gtrf
2147gtff
5841hhyt
erft4589
gtyh5874
gred9872
iolp2536
aswd2154
erfg5843
hyjk1203
xswz1025
1269fdvt
1489hygg
5896dews
4719hygf
8536fred
5874hygb
9874kiuj
6954gtrf
2147gtff
5841hhyt
erft4589
gtyh5874
gred9872
iolp2536
aswd2154
erfg5843
hyjk1203
xswz1025
5462dwsa
52148693
kjhgy415
4789652k
01235lkh
1458lkiu
2541lyre
9841hgtr
2013hytg
1489hrfd
4715kjun
698kjhyu
1235ftgh
搜索更多相关主题的帖子: 统计 
2011-01-27 15:53
wk940827
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2010-12-9
收藏
得分:0 
调用子函数实现如下功能:
1,得到每一列最后一个字符,譬如第一列是‘t'.
2,统计't'在这一列中出现的情况,譬如这列是这样的:................wtwtwtrytrrrrgggffgtttttttttttttwqgtjyyyyjuywtthhjett
那么运行的结果就是:'t'出现的情况:.......1111(13)122
当连续出现次数>9时,则该数要用()括起来(上述(13))以与左右数区别。
3.运行时间尽量占用不多,最好指针实现。

2011-01-27 15:54
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:10 
第一,单看char  **text_2_array(const char *filename)这个函数有问题,居然返回一个函数里定义数组,楼主应该看一看函数生存期那节,不然出问题。
第二,指针不一定解决速度,这个看你用什么算法,这个算法时间复杂度如何的。

小代码,大智慧
2011-01-27 16:07
wk940827
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2010-12-9
收藏
得分:0 
呵呵 我是网上找到凑合起来的(只是运行后得到的数组经验证到是没问题),烦请帮我写个函数。
2011-01-27 20:27
wk940827
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2010-12-9
收藏
得分:0 
现发现下述这个函数有问题了:
char  **text_2_array(const char *filename)

请问将in.txt内容转化为二维数组该用什么方法呢?望赐教!
2011-01-28 14:31
快速回复:请写个字符统计函数
数据加载中...
 
   



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

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