我有一個字符串名爲CC:如何實現在C中重新排列數組?
char cc[49] = { "rrrrrrrrbbbwwwgggyyybbwwggyybbbwwwgggyyyoooooooo" };
我試圖重新排列並結合成像這樣一個較長的字符串(我知道這不工作):
char Intermediary[120] = {
{ ("nn%c%c%cn", (cc[29], cc[40], cc[46])) },
{ ("nnn%c%cn", (cc[39], cc[47])) },
{ ("nnn%c%c%c", (cc[38], cc[48], cc[37])) },
{ ("nn%c%cnn", (cc[21], cc[28])) },
{ ("nnn%cn%c", (cc[27], cc[26])) },
{ ("n%c%c%cnn", (cc[1], cc[9], cc[20])) },
{ ("n%cn%cnn", (cc[2], cc[19])) },
{ ("n%cn%cn%c", (cc[3], cc[18], cc[17])) },
{ ("nn%cn%cn", (cc[30], cc[44])) },
{ ("nnnn%c%c", (cc[45], cc[36])) },
{ ("n%c%cnnn", (cc[4], cc[10])) },
{ ("n%cnnn%c", (cc[5], cc[16])) },
{ ("%cn%cn%cn", (cc[32], cc[31], cc[41])) },
{ ("%cnnn%cn", (cc[33], cc[42])) },
{ ("%cnnn%c%c", (cc[34], cc[43], cc[35])) },
{ ("%cn%cnnn", (cc[23], cc[22])) },
{ ("%cnnnn%c", (cc[24], cc[25])) },
{ ("%c%c%cnnn", (cc[12], cc[6], cc[11])) },
{ ("%c%cnnnn", (cc[13], cc[7])) },
{ ("%c%cnnn%c", (cc[14], cc[8], cc[15])) },
};
printf("%s", Intermediary);
這是生產下面的輸出:
ooybybyyogbgoogwgwrg
與之相對應出來什麼:
nnbyonnnnyonnnnyognnbynnnnnyngnrbynnnrnynnnrnyngnnbnonnnnnognrbnnnnrnnngwnbnonwnnnonwnnnogwnbnnnwnnnngwrbnnnwrnnnnwrnnng
我在做什麼錯?我看過StackOverflow上的各種論壇帖子,但似乎沒有人幫助我。我已經用Python重寫了代碼(它有效),但是Python到C的轉換器爲C noob(例如我自己)生成了無用的長代碼:(任何形式的幫助都將不勝感激,或者如果您感覺非常慷慨,後面的示例代碼/函數。預先感謝您:)。
編輯:
假設Deduplicator的推薦下,我的代碼現在看起來像這樣:
printf("nn%c%c%cn", cc[28], cc[39], cc[45]);
printf("nnn%c%cn", cc[38], cc[46]);
printf("nnn%c%c%c", cc[37], cc[47], cc[36]);
printf("nn%c%cnn", cc[20], cc[27]);
printf("nnn%cn%c", cc[26], cc[25]);
printf("n%c%c%cnn", cc[0], cc[8], cc[19]);
printf("n%cn%cnn", cc[1], cc[18]);
printf("n%cn%cn%c", cc[2], cc[17], cc[16]);
printf("nn%cn%cn", cc[29], cc[43]);
printf("nnnn%c%c", cc[44], cc[35]);
printf("n%c%cnnn", cc[3], cc[9]);
printf("n%cnnn%c", cc[4], cc[15]);
printf("%cn%cn%cn", cc[31], cc[30], cc[40]);
printf("%cnnn%cn", cc[32], cc[41]);
printf("%cnnn%c%c", cc[33], cc[42], cc[34]);
printf("%cn%cnnn", cc[22], cc[21]);
printf("%cnnnn%c", cc[23], cc[24]);
printf("%c%c%cnnn", cc[11], cc[5], cc[10]);
printf("%c%cnnnn", cc[12], cc[6]);
printf("%c%cnnn%c", cc[13], cc[7], cc[14]);
C中沒有魔法插入。您必須調用這樣的函數,例如'printf'。 – Deduplicator
@Deduplicator好吧,我現在已經實現了一大堆'printf'。我應該如何保存最終字符串?用'sprintf'替換'printf'? –
不知道你現在的代碼是什麼樣的。在問題結尾添加分隔符後? – Deduplicator