學習網站:http://www.runoob.com/cplusplus/cpp-functions.html
char在VC(c++)中占1字節(byte),8位(bit)。
int在VC(c++)中占4字節(4byte),32位(32bit)。
一、相關函數摘要
1、srand( (unsigned) time( &t ) )
隨機函數srand()函數產生一個以當前時間開始的隨機種子
2、time( &t )
獲取time_t類型的當前時間
3、 clock()
這個函數返回從“開啟這個程序進程”到“程序中調用clock()函數”時之間的CPU時鍾計時單元(clock tick)數。
4、FILE *fopen(const char *filename, const char *mode) ;
使用給定的模式 mode 打開 filename 所指向的文件
- filename -- 這是 C 字符串,包含了要打開的文件名稱。
- mode -- 這是 C 字符串,包含了文件訪問模式,模式如下:
模式 | 描述 |
---|---|
"r" | 打開一個用於讀取的文件。該文件必須存在。 |
"w" | 創建一個用於寫入的空文件。如果文件名稱與已存在的文件相同,則會刪除已有文件的內容,文件被視為一個新的空文件。 |
"a" | 追加到一個文件。寫操作向文件末尾追加數據。如果文件不存在,則創建文件。 |
"r+" | 打開一個用於更新的文件,可讀取也可寫入。該文件必須存在。 |
"w+" | 創建一個用於讀寫的空文件。 |
"a+" | 打開一個用於讀取和追加的文件。 |
該函數返回一個 FILE 指針。否則返回 NULL,且設置全局變量 errno 來標識錯誤。
5、size_t fread(void *ptr , size_t size , size_t nmemb , FILE *stream);
從給定流 stream 讀取數據到 ptr 所指向的數組中
- ptr -- 這是指向帶有最小尺寸 size*nmemb 字節的內存塊的指針。
- size -- 這是要讀取的每個元素的大小,以字節為單位。
- nmemb -- 這是元素的個數,每個元素的大小為 size 字節。
- stream -- 這是指向 FILE 對象的指針,該 FILE 對象指定了一個輸入流。
成功讀取的元素總數會以 size_t 對象返回,size_t 對象是一個整型數據類型。如果總數與 nmemb 參數不同,則可能發生了一個錯誤或者到達了文件末尾。
6、char *strcat(char *dest, const char *src)
把 src 所指向的字符串追加到 dest 所指向的字符串的結尾
- dest -- 指向目標數組,該數組包含了一個 C 字符串,且足夠容納追加后的字符串。
- src -- 指向要追加的字符串,該字符串不會覆蓋目標字符串。
該函數返回一個指向最終的目標字符串 dest 的指針。
7、 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
把 ptr 所指向的數組中的數據寫入到給定流 stream 中;把ptr所指向的nmemb*size個字節輸出到stream所指向的文件中。
- ptr -- 這是指向要被寫入的元素數組的指針。
- size -- 這是要被寫入的每個元素的大小,以字節為單位。
- nmemb -- 這是元素的個數,每個元素的大小為 size 字節。
- stream -- 這是指向 FILE 對象的指針,該 FILE 對象指定了一個輸出流。
返回寫到stream文件總的數據項個數。
8、int fclose(FILE *stream)
關閉stream所指文件,釋放文件緩沖區
- stream -- 這是指向 FILE 對象的指針,該 FILE 對象指定了要被關閉的流。
出錯返回非0,否則返回0。
9、int feof(FILE *stream)
測試給定流 stream 的文件結束標識符;檢查文件是否結束。
- stream -- 這是指向 FILE 對象的指針,該 FILE 對象標識了流。
遇到文件結束符返回非零值,否者返回0。
二、ECC代碼中調用的大數庫(tommath)函數總結
1、mp_int a
mp_digit是無符號整數;dp是存放大整數的地址;used為實際使用的mp_digit單元;sign=0,表示非負數;=1表示負數。
2. mp_init
初始化mp_int結構,函數返回MP_OKAY,就可以認為該結構已正確初始化,可以安全的被庫中其他函數使用
3. mp_init_set_int
初始化mp_int結構並設置大常量。它接受一個“長”數據類型作為輸入,並且總是將其當作一個32位整數。
輸入一個mp_int類型的和一個“長”整型b,輸出a等於b。
4.mp_init_set
其中b是一個數據位。
初始化mp_int結構並設置小常量。例如將mp_int結構設置成一個相對較小的值(1或2等)。
5. mp_toradix
函數原型為:int mp_toradix(mp_int *a, char *str, int radix)
此算法計算mp_int類型的a的以r為基的表示法,並把數位存在數組temp(char型)中並以字符串形式輸出到屏幕上。
6. mp_prime_random_ex
函數原型為:int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback cb, void *dat);
*dat一般可設置為NULL。
求一定位數的素數
a為返回值,t為回測次數,通常可為10,size指產生的素數的位數
7.mp_expt_d
函數原型為:int mp_expt_d(mp_int *a, mp_digit b, mp_int *c)
此算法計算a的b次冪,其中b為單數位數字。
8. mp_sqr
函數原型為:int mp_sqr(mp_int *a, mp_int *b)
輸入mp_int類型的a,輸出b=a^2.分配了一個臨時mp_int b來保存平方結果。
9.mp_sqrt
函數原型為:int mp_sqrt(mp_int *arg, mp_int *ret);
此算法為開平方根算法。
10.mp_mul_d
函數原型為:int mp_mul_d(mp_int *a, mp_digit b, mp_int *c)
單數位乘法。此算法快速計算mp_int與單數位值的乘積。輸入mp_int a和mp_digit b,輸出c=ab
11.mp_mul
函數原型為:int mp_mul(mp_int *a, mp_int *b, mp_int *c);
計算兩個數的有符號乘積。返回結果為目標操作數c=ab。
12.mp_add
函數原型為:int mp_add(mp_int *a, mp_int *b, mp_int *c)
輸入兩個mp_int類型的a和b,輸出有符號加法c=a+b。
13.mp_sub
函數原型為:int mp_sub(mp_int *a, mp_int *b, mp_int *c);
輸入兩個mp_int類型的a和b,輸出有符號加法c=a-b。
14.mp_mod
函數原型為:int mp_mod(mp_int *a, mp_int *b, mp_int *c)
輸入兩個mp_int類型的a和b ,輸出c=a mod b, 0 <= c < b
15.mp_cmp
函數原型為:int mp_cmp(mp_int *a, mp_int *b)
有符號數的比較。輸入兩個mp_int類型的a和b,輸出有符號數比較結果(a在b的左邊)
函數返回值為MP_GT=1時為大於;MP_EQ=0時為等於;MP_LT=-1時為小於。
16.mp_clear
函數原型為:void mp_clear(mp_int *a);
輸入:mp_int類型的變量a,輸出:回收為a分配的內存。
17.mp_copy
函數原型為:int mp_copy(mp_int *a, mp_int *b);
b = a,該算法拷貝了mp_int結構a,算法成功終止時,mp_int結構b就和a代表同一個整數值。mp_int結構b是結構a的完整但不同的拷貝,mp_int結構a可以修改並且不會影響mp_int結構b的值。
18.mp_init_copy
函數原型:int mp_init_copy(mp_int *a, mp_int *b);
初始化mp_int結構a,並將b拷貝到a 。
19. mp_zero
函數原型為:void mp_zero(mp_int *a);
輸入mp_int 類型的a,並將a的內容清零。
20.mp_invmod
函數原型為:int mp_invmod(mp_int *a, mp_int *b, mp_int *c);
c = 1/a (mod b)
輸入mp_int a和b,(a,b)=1,p>=2,0<a<p,輸出模逆c=a^-1(mod b)。即ab=1(mod p)
21.mp_mulmod
函數原型為:int mp_mulmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d);
此算法求解 d = a * b (mod c)
22. mp_submod
函數原型為:int mp_submod(mp_int *a, mp_int *b, mp_int *c, mp_int *d);
此算法求解 d = a - b (mod c)
轉載自:http://blog.csdn.net/wjj1987/article/details/6409469