如何用C语言统计一个数据文件中的数据个数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用C语言统计一个数据文件中的数据个数相关的知识,希望对你有一定的参考价值。

数据文件中存有若干个数据,如2 56 0 325 324 6 43 6 35 35等,数据之间用空格隔开,如何统计这些数的个数?因为如果在程序中将文件中这些数据存入一个数组(比如大小为100)时,那么除了文件中实际存在的数据,剩下的那些都默认为0了,所以想知道,如何统计文件中实际存入的数据个数呢?我也有可能输入0的所以不能统计不为0的个数。。。谢谢!

  使用fopen函数打开文件,使用fgetc()一个字符一个字符的读取,然后计数统计就可以啦,fget()从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节,这个函数的返回值,是返回所读取的一个字节。如果读到文件末尾或者读取出错时返回EOF。
#include<stdio.h>
int main()

FILE *fp;
char filename[50];
int num=0;
printf("输入一个文件名: ");
gets(filename);
if((fp=fopen(filename,"r"))==NULL)

printf("文件打开失败..\n");
return ;

while(!feof(fp))fgetc(fp)&&num++;
printf("%s 文件中共有字符个数: %d\n",filename,num);
fclose(fp);
return ;
参考技术A 存入 字符数组 判断 空格的个数 直到为空本回答被提问者和网友采纳 参考技术B 楼主可以统计空格的个数吗?空格的个数+1就是数字的个数了

如何用python实现两个文件重复数据筛选并统计

文件1:MD5码,名字,IP
文件2:MD5码,ID,名字
我想把两个文件的MD5码做对比,看看文件1的MD5码在第二个文件中是否存在,若存在输出到文件3,然后输出统计总数,请问该怎么做?求大神指导,本人一直用excel,但数据量太大(5000万),想用Python·解决,谢谢!!!!我的分全拿出来悬赏了,希望大家能给代码让我自己运行试试看。久一点无所谓。谢谢

本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴。具体方法如下:
对一个列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],现在我们需要统计这个列表里的重复项,并且重复了几次也要统计出来。
方法1:
?

1234

mylist = [1,2,2,2,2,3,3,3,4,4,4,4]myset = set(mylist) #myset是另外一个列表,里面的内容是mylist里面的无重复 项for item in myset: print("the %d has found %d" %(item,mylist.count(item)))

方法2:
?

123456

List=[1,2,2,2,2,3,3,3,4,4,4,4]a = for i in List: if List.count(i)>1: a[i] = List.count(i)print (a)

利用字典的特性来实现。
方法3:
?

123

>>> from collections import Counter>>> Counter([1,2,2,2,2,3,3,3,4,4,4,4])Counter(1: 5, 2: 3, 3: 2)

这里再增补一个只用列表实现的方法:

?

12345678910

l=[1,4,2,4,2,2,5,2,6,3,3,6,3,6,6,3,3,3,7,8,9,8,7,0,7,1,2,4,7,8,9] count_times = []for i in l : count_times.append(l.count(i)) m = max(count_times)n = l.index(m) print (l[n])

其实现原理就是把列表中的每一个数出现的次数在其对应的位置记录下来,然后用max求出出现次数最多的位置。
只用这段代码的话,有一个缺点,如果有多个结果,最后的现实的结果只是出现在最左边的那一个,不过解决方法也很简单
参考技术A

5000w建议你还是用数据库~如果你打算长久用的话.

单单是下面的代码, 就要好几秒

for i in range(100000000):
a = 1
else:
print("ok")

最坏的5000w*5000w=2500000000000000

可能需要几个月的时间...

参考技术B #!/usr/bin/env python3

file_ip = 'a.txt'
file_id = 'b.txt'
file_result = 'c.txt'

f2 = set()
with open(file_id) as f:
    for line in f.readlines():
        s = line.strip()        
        if s:
            md5 = s.split(',')[0]
            f2.add(md5)


total = 0
with open(file_ip) as f, open(file_result, 'w') as wf:
    for line in f.readlines():
        s = line.strip()
        if s and s.split('\\n')[0] in f2:
            total += 1
            wf.write(s)

print('total:', total)

参考技术C

    我没看到悬赏分

    悬赏分不如RMB有吸引力

以上是关于如何用C语言统计一个数据文件中的数据个数的主要内容,如果未能解决你的问题,请参考以下文章

如何用c语言实现删除文件中指定的数据;例如

如何用C语言读取txt文件中的数据到结构体数组中

如何用C语言输出paraview能够直接读取的数据文件?

如何用c读取文件

如何用c语言实现多组数据输入,每组数据一行每行数据个数任意

如何用C语言读取word中的数据