我需要創建功能:如何decompres字符數組在C
char * decompress(const char * src) {
}
輸入這個功能是一些字符串:
Hello world! -> Hello world!
Hel2o world!10" -> Hello world!!!!!!!!!!
,你可以看到,如果有一些數字是重複此前的字符次數。我是java程序員,但現在我需要在c中解決這個問題;
我現在有這個。它只是打印我希望正確的價值,但我不知道如何分配它返回指針
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <assert.h>
char * decompress(const char * src) {
int max = 0;
int pom = 1;
char *vysledek = "";
int i;
for (i = 0; i < strlen(src); i++) {
max = 0;
pom = 1;
while (isdigit(src[i])) {
int digit = (src[i] - '0');
max = max * 10 + digit;
i++;
pom++;
}
if (max == 0) {
max = 1;
}
int j;
for (j = 0; j < max; j++) {
printf("%c", src[i - pom]);
}
}
return vysledek;
}
int main(int argc, char * argv []) {
decompress("Hel2o world!10");
return 0;
}
如果代碼的其餘部分工作,您需要做一些小的修改:將內存分配給您的輸出字符串,然後將字符添加到它。然而,問題仍然是你應該爲你的字符串分配多少內存。你可以使用一個靜態值(這將適用於所有長度),近似值,或者運行一個單獨的循環來首先計算出你需要多少空間。另一個選擇是動態分配一定數量的內存,然後分配兩倍的大小,如果填滿並複製內容。 – Nit 2014-11-22 11:49:32
你的代碼中有UB,就像在外循環的第一次迭代中一樣,內循環的內循環print src [-1]' – 2014-11-22 11:53:35