導航:首頁 > 網路數據 > 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引用大數據相關的資料

熱點內容
日本大胸的女人電影 瀏覽:475
魔鬼交鋒 .45 瀏覽:469
男女生猴子的電影 瀏覽:439
win10共享文件密碼怎麼取消 瀏覽:551
大數據崗位人才缺口多少 瀏覽:772
面向對象程序設計的基本概念 瀏覽:147
itv怎麼刪除app 瀏覽:839
蘋果137去除小紅點描述文件 瀏覽:917
蘋果11描述文件跳不出來 瀏覽:51
js實現按鈕單擊事件 瀏覽:98
app改國家在哪裡 瀏覽:832
招標文件有下列哪些情形招標人應當拒收 瀏覽:610
js遍歷checkboxlist 瀏覽:933
日本電影資源最大網站 瀏覽:818
永寧縣電影院今日影訊 瀏覽:463
在哪裡可以看未播出的電視劇 瀏覽:927
韓國一個老女人包養男生的電影 瀏覽:372
池恩瑞韓國電影 瀏覽:564
java界面代碼 瀏覽:468
穿越回到蘇聯解體前夕 瀏覽:877

友情鏈接