C語言問題記錄1

2021-09-02 20:30:12 字數 556 閱讀 6798

記錄前段時間經歷的乙個問題,**大致如下:

int i=0;

unsigned char a[10]=;

file* pfile=fopen("c:\\data.txt","r");

if(pfile!=null)

目的是從檔案中讀取10個16進製表示的數,且如0a、cc、a8等,每次讀2個字元,最大也就是ff,用1個位元組去接收。

問題是,10個位元組大小的陣列a會溢位。

原因是,用scanf或fscanf,用%x形式去讀數,會預設為用int型別變數接收,所以每次讀數,並不是寫sizeof(unsinged char)個位元組大小的記憶體,而是寫sizeof(int)個位元組大小的記憶體。%02x中的2只限制了讀的字元位數,儘管2位字元就是1個位元組,但並不會唯讀1個位元組大小。

解決方案,個人認為要麼用int陣列接收,要麼unsigned char陣列大小留裕量,不過即使留餘量也只能順序寫入陣列,中間插入寫入的話,插入那個位元組處後面sizeof(int)-sizeof(char)個位元組的資料還是會被覆蓋,所以還是int陣列接收比較保險。

問題記錄1

一直用grid列表,今天需要使用乙個動態生成的 無翻頁的table。通過table物件,可以輕鬆操作某行某列。第二行第一列 document.getelementbyid buildtable rows 1 cells 0 但是這樣取出來的是 網上查了下說a標籤內文字用innerhtml,我試了都去...

C語言 精華小問題記錄

在知乎中看到乙個回答,說到了1987年國際c語言混亂 大賽獲獎的一行 只有一行,卻窮盡了c中的精華。main 看了一下,記錄一下,防止以後忘記了,以下是根據原文章的描述加上自己的理解,以自己容易懂的方式重寫了一下。此處為斜槓 轉義字元的用處參考鏈結。define unix 1 intmain 對了,...

今日問題記錄 1

1 環境 linux version 3.4.2 book book desktop gcc version 4.3.2 sourcery g lite 2008q3 72 machine smdk2440 reating 4 mtd partitions on nand 0x00000000000...