2013-06-26 51 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