2013-06-26 90 views
0

我有下面的代碼,它用strtok獲取一些char標記,它將這些標記一個接一個地保存在表中,最後打印這些標記。我的錯誤是在錶行:數組中的字符指針值

error: invalid conversion from 'char* to 'char'' 

東西我誤解有關指針和文字,我不知道怎麼寫錶行((我想有以下格式))。我試過類似

table[i][5+(i/2)] = *ptr; 

但我有分段錯誤。

i = 0; 
int offset = 5; 
char* ptr; 
ptr = strtok(buff,"do something"); 
char table[1][10];  
while (ptr != NULL) 
{ 
    if (i == 0) 
    strcat(machine, ptr); 
    if (i == 2) 
    strcat(number, ptr); 
    if (i == 4) 
    strcat(hr, ptr); 
    if (i == 6) 
    strcat(dw, ptr); 
    if (i == 8) 
    strcat(vcc, ptr); 
    ptr = strtok(NULL,"do something"); 
    table[i][5+(i/2)] = ptr;  
    i++; 
} 
printf("Final: %s, %s, %s, %s, %s\n", machine, number, hr, dw, vcc); 
+7

'table [i] [5+(i/2)] = * ptr;'是正確的。分段錯誤是因爲「我」超過了表格尺寸。 – Maroun

回答

3

table[i][5+(i/2)] = ptr;是錯誤的,因爲您試圖分配地址而不是值。

table[i][5+(i/2)] = *ptr;是正確的。它將在ptr處給出值。

分割錯誤是因爲i。它指的是一個超出數組邊界的地址。

+0

所以你的目的是爲了增加數組的維數? – dali1985

+1

@ dali1985不!你應該確保'我'不超過尺寸。這表明你的邏輯不好,你應該重新考慮循環並在向表中插入一個值之前執行一些檢查。 – Maroun