导航:首页 > 网络数据 > c引用大数据

c引用大数据

发布时间:2021-03-04 02:36:14

Ⅰ 用C语言实现大数据的加减运算(基本类型无法储存的大数据,使用字符串解决)。

#include"stdio.h"
#include<string.h>
intmain(intargv,char*argc[]){
chara[]="";
charb[]="",*pa,*pb;
inti,j,k,la,lb;
if((la=strlen(a))>=(lb=strlen(b)))
=a,pb=b;
else{
pa=b,pb=a;
i=la,la=lb,lb=i;
}
printf("%s+%s =",a,b);
for(i=la-1,j=lb-1;j>=0;pa[i--]+=pb[j--]-'0');
for(i=la-1;i>0;i--)
if(pa[i]>'9')
pa[i]-=10,pa[i-1]++;
if(pa[0]>'9'){
printf("1");
pa[0]-=10;
}
else
for(;pa[i]=='0';i++);
printf("%s ",pa+i);
printf(" %s-%s =",a,b);
for(i=la-1,j=lb-1;j>=0;pa[i--]-=pb[j--]-'0');
for(i=la-1;i>0;i--)
if(pa[i]<'0')
pa[i]+=10,pa[i-1]--;
if(pa[0]<'0'){
printf("-");
pa[0]+=1;
}
else
for(;pa[i]=='0';i++);
printf("%s ",pa+i);
return0;
}

运行结果:

Ⅱ C语言大数据问题

给你提个思路吧,这种大数据都必须用数组来做的。把数字直接定内义成数组,然后将容转换规则写成代码,而不是直接用取余或取整来做。我给你上传一个大数加法的代码,给你些启发吧。想要代码可以先采纳我,然后我给你写一个进制转换的代码。你这分太少,多些我会直接给你写个代码的。

Ⅲ c语言处理文件里的大数据

只能分块处理了,读入一块、处理一块、存储一块,数据库就是这么干的。

Ⅳ C/C++大数据处理:10Gtxt数据库文件

10G 连一次导入内存都不行,而且你说的串除了出现1次没有其他特征,只能文件分块读入用KMP匹配
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1024*1024*10
int index_KMP(char *s,int n,char *t,int pos);
//利用模式串的t的next函数求t在主串s中的第pos个位置之后的位置的KMP算法(t非空,1<=pos<=Strlength(s))。

void get_next(char * t,int * next);
//求模式串t的next函数的并存入数组next[]中。
int next[MAX];
int main()
{
char* s= (char*)malloc(MAX+1);
memset(s,0,MAX+1);
char t[256]={0},c;
printf("请输入检测字符串,以#号结尾");
int i=0;
while((c=getchar())!='#'&&i<256)
{
t[i++]=c;
}
fflush(stdin);
//strcpy(t,"2014-04-28 18:14:33,333");
get_next(t,next);
FILE* pf = NULL;
if((pf = fopen("1.txt","r"))==NULL){
printf("打不开文件!\n");
return 0;
}
int cur=0,n=0;
unsigned long long pos=0,sum=0;
while(!feof(pf))
{
int len = fread(s,1,MAX,pf);
sum+=len;
printf("读取第 %5d 次,长度 %5d ,总长:%ld\n",cur+1,len,sum);
n=index_KMP(s,MAX,t,pos);
if(n>0)
{
pos = n+cur*MAX;
break;
}
++cur;
}
fclose(pf);

free(s);
if(n!=0)
printf("\n模式串 t 在主串 s 中第 %ld 个位置之后。\n\n",n);
else
printf("\n主串中不存在与模式串相匹配的子串!\n\n");

}

int index_KMP(char *s,int n,char *t,int pos)
//利用模式串的T的NEXT函数求t在主串s中(长度n)的第pos个位置之后的位置的KMP算法,(t非空,1<=pos<=Strlength(s)).
{
int i=pos,j=1;
while (i<=n &&j<=(int)strlen(t))
{
if (j==0 || s[i]==t[j-1]) //继续进行后续字符串的比较
{
i++;
j++;
}

else j=next[j]; //模式串向右移动
}
if (j>(int)strlen(t)) //匹配成功
return i-strlen(t)+1;
else //匹配不成功
return 0;
}

void get_next(char *t,int *next)
//求模式串t的next函数的并存入数组next[]中。
{
int i=1,j=0;
next[0]=next[1]=0;
while (i<(int)strlen(t))
{
if (j==0 || t[i]==t[j])
{
i++;
j++;
next[i]=j;
}
else j=next[j];
}
}
替换文件名,每次读10M,我测试50M的1S搞定,因为寻找串可能再两次读取之间,完美的做法是后一次要把前一次的最后N个字符重新读取,N为寻找的子串长度,计算长度时需要特殊考虑,我简略了该种情况

Ⅳ c/c++对大数据有用吗

cloudera自己的大数据生态就是C++的, 比如Impala,ku。
java 把写大规模并发程序的难度降低了,但内是把问题挪到了容JVM上面,虽然内存分配省心了,但是问题在JVM上面表现出来了。
C++ 是写的时候难了,但是用起来爽
GO 的话,并发解决了, GC问题还是没解决 和java 一样一样的!

Ⅵ 用C语言如何实现大数据的加法,且是包括整数和小数的运算

刚写的 看看符合你要求不

#include<stdio.h>
#include<string.h>
typedefstruct
{
inta[200];
intb[200];
}NUM;
voidformat_num(NUM*n,char*str)
{
char*p_dot=NULL;
char*p;
inti=0;
memset(n,0,sizeof(*n));
for(p=str;*p;p++)
if(*p=='.')break;
if(*p)p_dot=p;

p--;
while(p>=str)
{
n->a[i++]=*p---'0';
}
p=p_dot;
if(p==NULL)return;
i=0;
p++;
while(*p)
n->b[i++]=*p++-'0';
}

voidprint_num(NUM*n)
{
inti,j;
for(i=sizeof(n->a)/sizeof(n->a[0])-1;i>=0;i--)
if(n->a[i])break;
if(i>=0)
for(;i>=0;i--)
printf("%d",n->a[i]);
elseprintf("0");
for(i=sizeof(n->b)/sizeof(n->b[0])-1;i>=0;i--)
if(n->b[i])break;
if(i>=0)
{
printf(".");
for(j=0;j<=i;j++)
printf("%d",n->b[j]);
}
}

voidadd(NUM*a,NUM*b,NUM*c)
{
intt=0;
inti;
for(i=sizeof(a->b)/sizeof(a->b[0])-1;i>=0;i--)
{
t+=a->b[i]+b->b[i];
c->b[i]=t%10;
t/=10;
}
for(i=0;i<sizeof(a->a)/sizeof(a->a[0]);i++)
{
t+=a->a[i]+b->a[i];
c->a[i]=t%10;
t/=10;
}
}

intmain()
{
charsa[100],sb[100];
NUMa,b,c;
scanf("%s%s",sa,sb);
format_num(&a,sa);
format_num(&b,sb);
print_num(&a);
printf("+");
print_num(&b);
printf("=");
add(&a,&b,&c);
print_num(&c);
printf(" ");

return0;
}

Ⅶ 使用CMarkup类怎么创建大数据量的XML文件

创建新XML文档析修改现存XML文档所些都利用MFC或STL字符串所实现简单类关于运行Zip文件右边例愿意通看源码几钟加入自应用
特征
Cmarkup依据EDOM简单XML析关键EDOM操作XML元素、属性数据简明集需要复杂XML特性避免读量DOMSAX文档
希望使用微软MSXMLCMarkup工程CmarkupMSXML类全面演示通EDOM使用MSXML并且C++ COM语始
载包(看面zip文件链接)包含测试框工程源码、Cmarkup类所测试示例、及编译选项关于用商业用途详细说明请看文章底部Licensing注意事项
面列CMarkup特征:
独立:需要任何外部XML组件
:编译工程类并且于文档维持字符串及总计于字符串内存索引数组
快:析器相快建立索引数组
简单:EDOM使创建、导航修改XML比简单
MSXML:CMarkupMSXML类用EDOM包装微软XML服务MSXML编译选项用演示类
UNICODE(统字符编码标准):于WindowsNTWindowsCE平台能够编译UNICODEWindowsNT UNICODEXML文档流UTF-8文件内部用宽字符
UTF-8:于UTF-8文件接受返UTF-8字符串(确保_MBCS没定义)
MBCS:于双字节数据(定义_MBCS)与UTF-8兼容.
STL:CMarkupSTL类完全没使用MFC演示要使用STL编译选项

每数据XML
我经文件需要保存或传递信息或计算机A 发送信息块计算机B总问题现:我要安排些数据格式现XML前能要考虑env类型例PATH=C:"WIN95;ini类型(些部组合)逗号限制或其些限制、或者固定字符串度现XML确定些问题答案某些候程序员气馁需要些便于帮助析格式尖括号所些解决XML复杂性于低限度读XML标签匹配规则我建议阅读CcodeProject站点Beginning XML - Chapter 2: Well-Formed XML
XML 更灵自等级加广泛应用虽XML比限定格式用更字符需要良向压缩需要扩展文档信息类型XML灵性体现需要要求信息每消费者重写逻辑程能够保持旧信息标识并且制定用相同式增加新属性元素

使用CMarkup
Cmarkup 基于压缩文档象模型(EDOM : "Encapsulated" Document Object Model,)简单XML处理器关键套XML处理产效与DOM(Document Object Model)整DOM数象类型EDOM定义象:XML文档EDOMXML原始吸引力—简单关于完整文档请看EDOM Specification.
CmarkUp 封装XML文档文本、结构前位置提供增加元素、导航元素属性数据所文档操作执行取决于前位置前孩位置前位置允许增加元素文档位置需要明确指增加象文档点CMarkup效命周期象直保持着用描述文档字符串调用GetDoc.
查看free firstobject XML editor源码用CMarkup创建、导航自XML文档
创建XML文档
于创建XML文档需要实例化CMarkup象并调用AddElem创建根元素.位置调用AddElem("ORDER") 文档简单装空ORDER元素. 调用AddChildElem 根元素面创建元素 (例:进入根元素内部层表示).面示例代码创建XML文档并返(内容)字符串
CMarkup xml;
xml.AddElem( "ORDER" );
xml.AddChildElem( "ITEM" );
xml.IntoElem();
xml.AddChildElem( "SN", "132487A-J" );
xml.AddChildElem( "NAME", "crank casing" );
xml.AddChildElem( "QTY", "1" );
CString csXML = xml.GetDoc();

些代码产面XML根结点ORDER元素;注意始标签 结束标签结尾元素父面(深入或包含)父元素始标签要前结束标签要ORDER元素包含ITEM元素ITEM元素包含三字元素:SN、NAMEQTY;

132487A-J
crank casing
1

例所显示能够元素创建新元素需要调用IntoElem 移前主位置前元素位置面增加元素CMarkup索引保持前位置指针保证源码更加短更简单导航文件相同逻辑位置使用
导航XML文档
面例所创建XML字符串用SetDoc加入CMarkup象能够解析引导确进入创建同CMarkup象要设置前位置文档始需要调用ResetPos.
面例csXML字符串CMarkup象我循环ORDER元素所ITEM元素并每项目序号数量
CMarkup xml;
xml.SetDoc( csXML );
while ( xml.FindChildElem("ITEM") )
{
xml.IntoElem();
xml.FindChildElem( "SN" );
CString csSN = xml.GetChildData();
xml.FindChildElem( "QTY" );
int nQty = atoi( xml.GetChildData() );
xml.OutOfElem();
}

于我发现每元素查询元素前要调用IntoElem查询完再调用OutOfElem 习惯于种导航类型知道检查循环要确定每IntoElem 调用都与应OutOfElem 调用
增加元素属性
面创建文档例仅创建ITEM元素现例创建项目前内容加裁再增加数据源加SHIPMENT信息元素属性段代码演示能调用调用IntoElemAddElem代替AddChildElem,函数调用虽意味着更调用许认更直观
CMarkup xml;
xml.AddElem( "ORDER" );
xml.IntoElem(); // inside ORDER
for ( int nItem=0; nItem<aItems.GetSize(); ++nItem )
{
xml.AddElem( "ITEM" );
xml.IntoElem(); // inside ITEM
xml.AddElem( "SN", aItems[nItem].csSN );
xml.AddElem( "NAME", aItems[nItem].csName );
xml.AddElem( "QTY", aItems[nItem].nQty );
xml.OutOfElem(); // back out to ITEM level
}
xml.AddElem( "SHIPMENT" );
xml.IntoElem(); // inside SHIPMENT
xml.AddElem( "POC" );
xml.SetAttrib( "type", csPOCType );
xml.IntoElem(); // inside POC
xml.AddElem( "NAME", csPOCName );
xml.AddElem( "TEL", csPOCTel );

段代码产面XML根元素ORDER包含两ITEM元素SHIPMENT元素ITEM元素全都包含SN、NAME、QTY元素SHIPMENT元素包含带属性类型POC元素NAME及TEL元素

132487A-J
crank casing
1

4238764-A
bearing
15

John Smith
555-1234

查找元素
FindElem FindChildElem用于兄弟元素选标签名指定与标签名相匹配元素发现元素前元素并且调用Find前位置兄弟或匹配兄弟
判断元素索引调用两Find间定要复位前位置看面例ITEM元素别创建XML文件能确定SN元素QTY元素前查找QTY元素前要调用ResetChildPos();
于用特定序号查找元素需要完全循环ITEM元素并比较SN元素数据搜索序号例同于先前导航例调用IntoElem 进入ORDER元素并且用FindElem("ITEM")替换FindChildElem("ITEM");其实两种式都挺需要注意Find指定ITEM元素标签名我忽略所其兄弟元素例SHIPMENT元素
CMarkup xml;
xml.SetDoc( csXML );
xml.FindElem(); // ORDER element is root
xml.IntoElem(); // inside ORDER
while ( xml.FindElem("ITEM") )
{
xml.FindChildElem( "SN" );
if ( xml.GetChildData() == csFindSN )
break; // found
}

编码
ASCII编码引用我所依靠字符码128字符用英语编程使用ASCII码便UTF-8编程与拉公共ASCII集相同
所使用字符集Unicode编码集(UTF-8UTF-16UCS-2)于交互性及IE显示真需要XML声明进行描述像ISO-8859-1(西欧)字符集指定字符值比特且128255间便每字符仍使用比特Windows双字节字符集像GB2312Shift_JISEUC-KR每字符都用或两字节于些Windows字符集预处理需要定义 _MBCS 并要确定用户操作系统设置合适编码页
关于用XML描述XML文档前缀像需要通用SetDoc或Cmarkup构造函数传递结尾要包括车符根结点显示行
xml.SetDoc( ""r"n" );
xml.AddElem( "island", "Cura?ao" );

Ⅷ 如何使用C语言实现大数据体的动态读取与处理

在内存中开辟两个缓存区,大小?比如每个缓存32M,然后将数据读入输入缓存处理版,处理后的结果送输权出缓存
这里的关键问题是如何对缓存进行管理?总体思路是,当缓存中有数据时,则取数据进行处理,处理好后放输出缓存,同时还必须检测,当输出缓存数据快满时,能够及时将数据送入硬盘。。。

上面是大体思路,实际中,一般运用多线程处理这种情况,即一个线程负责管理输入缓存,一个线程负责管理输出缓存,第三个线程负责数据处理。。。具体管理策略有很多,你需要综合各种因素(比如时间宽余度等)来决定。。。

Ⅸ C语言基础,大数据的输入和输出

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineMAX101
intcheck(char*a){
inti,n,k=1;
n=strlen(a);
for(i=0;i<n;i++)
(a[i]>'9'||a[i]<'0'){
k=0;
break;
}
returnk;
}
intplus(char*a,char*b,int*s){
inti,j,n,m,t,k=0;
//printf("%s %s ",a,b);
i=strlen(a)-1;
j=strlen(b)-1;
t=0;
while(i>=0&&j>=0){
t=t+a[i--]-'0'+b[j--]-'0';
s[k++]=t%10;
t=t/10;
}
if(t&&(i!=j))
s[k]=t;
if(t&&(i==j))
s[k++]=t;
while(i>=0){
s[k]+=a[i--]-'0';
k++;
}
while(j>=0){
s[k]+=b[j--]-'0';
k++;
}
for(i=k-1;i>=0;i--){
printf("%d",s[i]);
}
printf(" ");
returnk;
}
intmain(intargc,char*argv[]){
chara[MAX],b[MAX];
intc[MAX+2]={0};
scanf("%s%s",&a,&b);
//printf("%s %s ",a,b);
if(check(a)&&check(b))
plus(a,b,c);
else
printf("error ");
return0;
}

Ⅹ 怎么用c语言处理大数据

只要内存够大,可以读取2万行数据的,我上次写了个程序读取了240万条数据到内存之中。
你只要用getline函数,和strtok函数配合使用就行了,只能读取6000行数据可能是你程序写的有问题。

阅读全文

与c引用大数据相关的资料

热点内容
句馆app怎么用 浏览:98
极速下载管家的文件路径 浏览:535
网站产品是什么意思 浏览:183
苹果电脑怎么压缩视频文件怎么打开 浏览:435
app的发展趋势国家政策报告 浏览:895
字符串反转java 浏览:321
如何制作安装系统镜像文件 浏览:399
win10文件夹左上角有红点 浏览:487
你为什么学plc编程 浏览:828
网络连接没了 浏览:991
代码打印pdf 浏览:563
扣扣红包网络连接失败 浏览:301
win10商城下载文件在哪 浏览:975
系统制作镜像文件 浏览:249
苹果手机指纹贴有危险 浏览:329
哪里有高中生学编程的 浏览:984
二零一八版cad的文件布局 浏览:181
js右键选中treeview 浏览:904
linux系统交换分区的文件格式是 浏览:218
数控机床编程里u5代表什么意思 浏览:202

友情链接