FPIS礦機
① 函數調用語句fseek(fp,-20L,2)的含義是什麼
含義是把文件指針移動到末尾之前20個位元組的位置,若文件大小小於20位元組,函數調用會失敗.
第三個參數寫2不是很規范, 這里的2其實代表SEEK_END
② fp音樂術語是什麼
fp表示強後突弱,全稱為Forte Piano,彈奏時力度先強然後突然弱下,突弱的力度放在強的力度後面。
其他相關術語:
強弱:
1、漸弱(Diminuendo/dim)
2、最弱(Piano Pianissmo/ppp)
3、很弱(Pianissmo/pp)
4、弱(Piano/p)
5、中弱(Mezzo Piano/mp)
6、漸強(Crescendo/cresc)
7、中強(Mezzo Forte/mf)
調式:
1、調 modal
2、調式 modes,modality
3、調性 tonality
4、大調 natural major
5、小調 natural minor
6、轉調 molation
(2)FPIS礦機擴展閱讀
演奏技巧術語:
琶音(Arpeggio)
吐音(staccato)
連奏(legato)(縮寫Leg)
斷奏(Spiccato)
裝飾音 (ornament)
顫音(trill)
震音(Tremolo)
柔弦(vibrato)
撥弦(pizzcato)
變格定弦(Scordatura)
③ 函數調用語句fseek(fp,-20L,2)的含義是什麼
fseek
函數名: fseek
功能:重定位流上的文件指針
用法:int fseek(FILE *stream, long offset, int fromwhere);
程序例「」
#include <stdio.h>
long filesize(FILE *stream);
int main(void)
{
FILE *stream;
stream = fopen("MYFILE.TXT", "w+");
fprintf(stream, "This is a test");
printf("Filesize of MYFILE.TXT is %ld bytes ", filesize(stream));
fclose(stream);
length = ftell(stream);
fseek(stream, curpos, SEEK_SET);
函數實參
函數作為另一個函數調用的實際參數出現。這種情況是把該函數的返回值作為實參進行傳送,因此要求該函數必須是有返回值的。例如: printf("%d",max(x,y)); 即是把max調用的返回值又作為printf函數的實參來使用的。在函數調用中還應該注意的一個問題是求值順序的問題。
所謂求值順序是指對實參表中各量是自左至右使用呢,還是自右至左使用。對此,各系統的規定不一定相同。介紹printf 函數時已提到過,這里從函數調用的角度再強調一下。
以上內容參考:網路-函數調用
④ 對函數調用語句fseek(fp,10,1)的含義
fseek
函數名: fseek
功 能: 重定位流上的文件指針
用 法: int fseek(FILE *stream, long offset, int fromwhere);
程序例:
#include <stdio.h>
long filesize(FILE *stream);
int main(void)
{
FILE *stream;
stream = fopen("MYFILE.TXT", "w+");
fprintf(stream, "This is a test");
printf("Filesize of MYFILE.TXT is %ld bytes\n", filesize(stream));
fclose(stream);
return 0;
}
long filesize(FILE *stream)
{
long curpos, length;
curpos = ftell(stream);
fseek(stream, 0L, SEEK_END);
length = ftell(stream);
fseek(stream, curpos, SEEK_SET);
return length;
}
int fseek( FILE *stream, long offset, int origin );
第一個參數stream為文件指針,offset為偏移,比如你要從文件的第10000個位元組開始讀取的話,offset就應該為10000,origin 為標志是從文件開始還是末尾。
origin 的取值:
SEEK_CUR Current position of file pointer
SEEK_END End of file
SEEK_SET Beginning of file
那麼fseek(fp,-size,1)中-size和1是否應理解為,從文件倒說第一個文件開始讀取
fseek最後一個參數最好不要直接指定一個數值,比如1,
要使用SEEK_CUR,SEEK_END,SEEK_SET
第二個參數表示相對於第三個參數的偏移,整數表示正向偏移,負數表示負向偏移,比如
fseek(fp,-size,SEEK_CUR);
從當前位置向文件後方(比如文件有123三個數字,那麼2在三的後方,3在2的前方)
fseek(fp,size,SEEK_SET);
從文件開始位置向前移動size
這里默認size是正數
⑤ #define fp_is_neg(val) ((((uint8_t*)&val)[3] & 0x80) != 0),這個函數的功能是....
我們可以倒著推到
fp_is_neg(val)應該只有兩種值 布爾類型的 0 或者 1,這一點從 最後 != 這個是個判等符號 ,優先順序是最低的 也就是最後執行一個符號 。
(uint8_t*)&val : 其中 &val是取val的地址 (uint8 *)&val c語言是沒有uint8的 應該是自己定義的數據類型 字面意思 是個無符號8位整型 typedef unsigned char uint8 或者#define uint8 unsigned char . (uint8 *)&val 把變數val的地址作為一個指針變數
再看這句 ((uint8_t*)&val)[3] 很容易理解了 把指針當數組首地址用,((uint8_t*)&val)[3] 是數組的第4個元素
(((uint8_t*)&val)[3] & 0x80) 用數組的第3個元素 和 0x80(一個十六進制數)按位與預算,0x80的二進制10000000這應該是一個掩碼 把低7位掩蓋這樣就能判斷最高位是 1還是0了
如果((uint8_t*)&val)[3]中的數據最高位是 0 ,由於 0=0所以0((((uint8_t*)&val)[3] & 0x80) != 0) 這條語句為假c語言規定假也就是false 語句的值是0 也就是fp_is_neg(val) ==0,反之fp_is_neg(val) ==1.
若果我說的不對 ,求高手指點