0
我想要寫,其處理一個字符串,它看起來像這樣的函數:c更改指針在函數
| 1,2,3,4 |(1-> 2),(2- > 3),(3-> 1)|
結果應該是一個打破串分解成這些字符串:
- (1-> 2)
- (2-> 3)
- (3-> 2)
這是我的代碼:
int processPart(char*** dest, char* from) //Processes a half at a time
{
int len = 0;
char* cutout = strtok(from, ",");
while(cutout)
{
(*dest) = (char**)realloc(dest, (len + 1) * sizeof(char*)); <<<<<<<
(*dest)[len] = (char*)calloc(strlen(cutout) + 1, sizeof(char));
memcpy((*dest)[len], cutout, strlen(cutout));
cutout = strtok(NULL, ",");
len++;
}
return len;
}
void processInput(char*** vertices, char*** edges, char* input, int* sizev, int* sizee)
{
int vlen = 0, elen = 0;
char* string = input + 1;
char* raw_vertices;
char* raw_edges;
string[strlen(string)] = '\0';
raw_vertices = strtok(string, "|");
raw_edges = strtok(NULL, "|");
*sizev = processPart(vertices, raw_vertices); //First the vertices
*sizee = processPart(edges, raw_edges); //Then the edges
}
int main()
{
char* in = stInput(); //input function
char** c = NULL, **b = NULL;
int a, d, i;
processInput(&c, &b, in, &a, &d);
for(i = 0; i < a; i++)
{
printf("%s\n", c[i]);
}
printf("++++++++++++++++");
for(i = 0; i < d; i++)
{
printf("%s\n", b[i]);
}
return 0;
}
然而,我在由< < < < < < <
標誌着線得到堆的腐敗任何人都知道我的錯誤是什麼?
嗨。要求人們發現代碼中的錯誤並不是特別有效。您應該使用調試器(或者添加打印語句)來分析問題,追蹤程序的進度,並將其與預期發生的情況進行比較。只要兩者發生分歧,那麼你就發現了你的問題。 (然後,如果有必要,你應該構造一個[最小測試用例](http://stackoverflow.com/help/mcve)。) –
我確實發現了錯誤 - 正如前面提到的那樣,它出現在特定的行上。我只是不知道什麼是錯誤以及如何正確執行。 – Sunspawn
您確實發現了*症狀*。但是現在您需要向後查找該症狀的實際原因。 –