原创 C語言字符映射

今天在寫俄羅斯一個客戶的需求時,遇到了一個問題。   軟鍵盤的表示是用U8類型來表示的,但是俄羅斯的字母是ASCII碼1000以後的了,U8是無法表示的,但是我要把這個改爲U16表示的話,牽一髮而動全身,要改的地方太多,無法保證錯誤,

原创 使一段代碼第一次執行和以後執行結果不同

在學習《C專家編程》時,遇到了這段代碼非常的有意思。 void generate_initializer(char * string) { static char separator = ' '; printf(" %c %s \n

原创 TS流包有效數據位置計算(adaption_field_control)

unsigned int GetSectionStart(unsigned char *ucPacketBuffer, struct ts_packet_head *pstPacketHead) { unsigned int uiS

原创 結構體數組作爲函數參數

把結構體數組名作爲函數的一個參數,然後在這個函數的函數裏面繼續作爲參數,把一個值賦給這個結構體數組的一個變量,我再賦值的地方是有值的,在函數裏面也是有值的,但是出了這個函數回到主函數時,這個結構體數組的變量的值就爲空了。爲什麼呢?因爲我在

原创 定義了的變量但是沒有使用和未定義的變量的相關知識

今天在思考我定義並初始化了的變量在程序中未使用到,在編譯的時候編譯器是怎麼對待這些值的。在尋找答案時又引發瞭如果我變量未初始化會怎麼樣?然後就寫程序測試了下。 #include<stdio.h>   int iGloblVal ; int

原创 只允許輸入正整數

       在解析TS流文件時,我要實現輸入節目號就能顯示節目相關信息,但是我剛開始沒有判斷輸入的節目號是不是正整數,我不小心按了其他鍵就一樣會被識別,但是沒有信息,這可不行,萬一用戶按錯了鍵,但還是跳轉到了節目信息節目,顯示空白,用戶

原创 解析TDT遇到的問題

按道理TDT就那麼一點東西,應該沒啥毛病,但是我在解析的時候發現一個流用碼流分析儀看是這樣的 我解析的時候是這樣的,它會按秒增加打印出來,不會死循環。 爲什麼呢?因爲TS流文件中可能不止一個TDT的短信息,我們要用的話獲取第一個時間信

原创 解析EIT遇到的問題

在從TS流文件中獲取EIT表信息時,要注意一些東西,這些東西是讓我迷惑的: 在PAT中獲取到的節目號在EIT中搜索不到,這是正常的,有這個節目並不一定有它的節目描述信息;在PAT中獲取不到的節目號在EIT中卻存在,這也正常,而且節目信息可

原创 解析NIT時遇到的問題

  在解析NIT的傳輸流循環部分信息時遇到了一個錯誤。 在傳輸流循環部分前的解析都很正常,打印出來的數據都無誤,但是到了這一部分就出現了打印到第4次就亂了(但是當第二個NIT只有三個描述信息的時候就無誤),於是我測試了只有一個NIT

原创 expected unqualified-id before ‘decltype’錯誤解析

今天在做讀入一組整數並把它們存入一個vector對象,要求先輸出第一個和最後一個元素的和,接着輸出第二個和倒數第二個元素的和,以此類推。 下面是我的程序:   #include<iostream> #include<vector> u

原创 解析PMT遇到的一些問題

  在解析PMT表時遇到一些疑惑,在這裏做個總結。   解析完PAT後得知PMT_PID就可以開始解析PMT了,但是我仔細一看PMT的表的格式,發現我幾點疑惑,前面一些參數和PAT一致,但是後面有3個for循環,突然就懵了。 PAT就一

原创 PSI信息解析

/*學習SPI和PI的時候看到一篇博客,內容非常好,只是排序不好,我就改了下*/   "PSI是對單一TS流的描述,是TS流中的引導信息"   PSI信息由節目關聯表PAT、條件接收表CAT、節目映射表PMT和網絡信息表NIT組成。這些表

原创 結構體變量多次定義錯誤

今天在寫解析TS流文件程序時,遇到了下面這個錯誤,但是我這兩個結構體確確實實都只在一個地方定義過。   /tmp/ccKhZsdn.o:(.bss+0x0): `stPatSectionHead'被多次定義 /tmp/ccuj7nNF.o

原创 TS流中Packet和Section的區別

最近在學習TS流文件的解析,有點困惑Packet、Section、Table的關係和區別,認真查找了資料後纔有了點眉目,在這裏總結下,如果有什麼不對,歡迎指出。 section是所有table的共有形式,包括PAT,PMT,NIT,CAT

原创 for循環運行原理疑問

我們在學習C語言的時候一定少不了使用for循環,大家對此都很熟悉吧,我原先以爲自己對for循環的使用瞭如指掌,那還不是小菜一碟,結果在看《C語言深度剖析》一書時遇到一個課後問題就把我難住了。 int main(void) {   int