2011-07-03 26 views
2

我有字符串的數組聲明像這樣:傳遞多維數組以在c中運行?

char parts[PART_COUNT][PART_MAX]; 

然後我製成的函數,它接受一個字符串,並串的陣列,並將它分爲那些部分,其被聲明如下:

WORD PartString(const char *str, char **parts, char sep); 

我似乎在部分[i] [j]閱讀,但如果我嘗試分配是這樣的:

parts[i][j] = str[x]; 

我得到這個錯誤:

remote.exe中的0x012614d8未處理的異常:0xC0000005:訪問衝突寫入位置0xcccccccc。

任何人都可以告訴我一種方法來做到這一點在C?謝謝。

+1

'字符部分[M] [N]'與char **部分不一樣;如果你爲了讓編譯器停止抱怨而進行了強制轉換,那麼這將是你的問題的原因。 –

+0

[將多維數組轉換爲C++中的指針](http://stackoverflow.com/questions/1584100/converting-multidimensional-arrays-to-pointers-in-c) –

+0

編譯器不抱怨,我只是簡單地通過作爲PartString(緩衝區,部分,'。'); – Kaije

回答

1
#define PART_MAX  1024 
#define PART_COUNT 4 

好吧,設法解決它,我有我的編譯器警告過,當我把他們回到我得到這個:

'char **' differs in levels of indirection from 'char [4][1024]' 

繼承人的新宣言,讓我修改的琴絃陣列:

WORD PartString(const char *str, char (*parts)[PART_MAX], char sep) 

然後我只傳遞如:

PartString(buffer, parts, '.'); 
+0

爲什麼定義變大? :d – Kaije