作者kikiqqp (喵食罐頭)
看板C_and_CPP
標題C語言下二維字元陣列任意位置取代
時間Tue Feb 13 15:41:52 2018
事先宣告了一個二維陣列並給予初值如下
ChArry[4][16] = {{"0123456789ABCDEF"},
{"GGTGTTATTTCTTCCG"},
{"TTCCGGATGTAAATTT"},
{"TGATGTATGTTATCCA"}};
其中想將字串 CharTest1[] = {"AT"}; 和
CharTest1[] = {"GG"};
分別取代 ChArry[2][13]和
ChArry[3][9]位置
使其變為
ChArry[4][16] = {{"0123456789ABCDEF"},
{"GGTGTTATTTCTT
ATG"},
{"TTCCGGATG
GGAATTT"},
{"TGATGTATGTTATCCA"}};
請問何種作法比較適當呢?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.158.70.171
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1518507716.A.BFD.html
1F:→ MOONRAKER: 是要多當 當當當當 02/13 15:57
2F:→ MOONRAKER: 位置長度通通已知 用迴圈直接抄進去 這樣最當 02/13 15:58
3F:推 sunev: 你知道什麼是當當當當當當?? 02/13 16:09
※ 編輯: kikiqqp (49.158.70.171), 02/13/2018 16:14:44
4F:→ stupid0319: ChArry[2][13] = 'A'; ChArry[2][14] = 'T'; 02/13 16:34
5F:→ stupid0319: ChArry[3][9] = 'G'; ChArry[3][10] = 'G'; 02/13 16:35
6F:→ MOONRAKER: 當當當當當當當當當就是ONLY YOU~~SEGMENTATION FAULT 02/13 17:45
7F:推 ggyyd: ATCG 這不是DNA嗎 02/13 18:03
8F:→ wtchen: 自身想法呢? 02/13 18:15
我目前作法是
#ifndef MX_SIZE
#define MX_SIZE(var) sizeof(var)/sizeof(var[0])
#endif
x = 2, y = 13;
for(int i = y; i < (MX_SIZE(CharTest1) + y); i++)
{
ChArry[x][i] = CharTest1[i - y];
}
包成一個 function
9F:推 TWkobe: LCS? 02/14 11:12
10F:推 LPH66: 跟 LCS 沒有關係, 就單純只是等長字串取代而已 02/14 11:42
11F:→ LPH66: 原 PO 要注意你這是字串, sizeof 求長度可能非你所願 02/14 11:43
12F:→ LPH66: 然後既然有想法了, 你的問題是? 想問有沒有更好的做法嗎? 02/14 11:46
13F:→ kikiqqp: 是的,想知道有沒有更好的方式 02/14 12:28
※ 編輯: kikiqqp (49.158.70.171), 02/14/2018 12:58:09
14F:→ outofyou: 往編譯器優化的方向想?更好是指執行更快or更好讀? 02/14 21:28
15F:→ MOONRAKER: sizeof()是compile-time macro 用在function裡面 02/19 22:04
16F:→ MOONRAKER: 你最好小心不會有意外的[爆]效果 02/19 22:05
17F:→ MOONRAKER: 另一個問題是你這套到底用過幾次 真的有用過嗎 02/19 22:06
18F:推 neigence: memcpy 02/21 11:51