原创 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