[問題] 將字元儲存到陣列 不是存到檔案

作者: hardware (哈味)   2015-06-01 17:27:16
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
G++ Linux
written_bytes=write(fd,payloadIndex,payloadLength);
if(written_bytes<=0)
{
printf("write error\n");
return 0;
}
payloadIndex = payloadIndex + written_bytes;
這個方法是將資料儲存到 fd這個檔案
payloadIndex是指標 從這個記憶體位址開始往後儲存 payloadLength 長度
比如

010001001100001110000111
今天我想把這串 0 或 1
儲存到 陣列變數放著 或其他方式等
不曉得要怎麼做呢?
謝謝
作者: anyoiuo   2015-06-01 17:30:00
memcpy(dst, src, length)?
作者: hardware (哈味)   2015-06-01 19:32:00
好像不行 ,不知道是不是我不太會用
作者: LPH66 (-6.2598534e+18f)   2015-06-01 19:43:00
問: 你存起來之後下次是什麼狀況要怎麼用?
作者: hardware (哈味)   2015-06-01 20:21:00
我想把它存到std::list string裡面 ,之後用其他變數排序後,存到TXThttp://imgur.com/edit上面那個錯了 http://imgur.com/kuPBltq為什麼第一個複製比較長 後面會出現亂碼壓?
作者: azureblaze (AzureBlaze)   2015-06-01 21:08:00
提示:s的長度是11
作者: hardware (哈味)   2015-06-01 21:16:00
那為什麼複製 6 個的不會有亂碼?
作者: azureblaze (AzureBlaze)   2015-06-01 21:17:00
字串看到0會自己結束你的s最後面有偷偷藏一個0用來標示結尾t本來裡頭是亂七八糟的東西所以你沒把結尾複製進去他就亂印到碰巧有0為止
作者: hardware (哈味)   2015-06-01 21:31:00
原來如此,那如何保證只copy 9位元呢?還是說cout的時候,會多印而以,實際上是存 9位元
作者: azureblaze (AzureBlaze)   2015-06-01 21:43:00
cout printf等處理字串的方法而已,不印就沒問題另外你要的是「位元」還是「位元組」
作者: anyoiuo   2015-06-01 22:13:00
既然你是資料是字元陣列(字串),那可以使用strncpy處理即可
作者: hardware (哈味)   2015-06-01 22:54:00
我是要處理位元,了解,我再試試看,感謝~
作者: anyoiuo   2015-06-01 23:04:00
如果單存想存"位元",那建議不要以char字元來存放可能需要更仔細的說明你想拿來做什麼目的會更好好給建議類似unsigned data[N] // 需要N byte儲存搭配透過Shift:<< >>; And/Or:& |; Not:~x邏輯運算來實作

Links booklink

Contact Us: admin [ a t ] ucptt.com