2011-09-12 16 views
0

我可以在C++中做这样的事吗?Sscanf在C++中(读取值并同时赋值)

//int i,Data[]; 
//malloc Data[]; 

$sscanf(line,"Data[%d]=0x%d",i,Data[i]); 

Data []是一个int数组,我试图根据一次读入的'i'的值来读取随机索引。

+0

传递给函数的所有参数在函数调用之前都是“完全”评估的。 –

回答

4

你可以这样来做:

int index, value; 
sscanf(line, "Data[%d]=%d", &index, &value); 
// Check if index is within bounds of the array here 
Data[index] = value; 

您需要的“&”,因为sscanf的需要指针作为参数。

+0

是的..这就是我最终采取的行动。使用一个临时变量。但是你知道,我不是一个临时变量的粉丝。 – Jean

-1

为什么不自己尝试一下?不要忘记,你需要将指针传递到你的价值观,即

sscanf(line, "Data[%d]=0x%d", &i, &Data[i]); 

无论它的工作原理(并备案,事实并非如此),它使更可读/安全的代码做分配有独立的电话(会发生什么,如果i比数组末端更大?):

const int maxData = 10; 
int Data[maxData]; 

int i; 
int tmp; 
sscanf(line, "Data[%d]=0x%d", &i, &tmp); 

if(i >= maxData) 
{ 
    printf("Error! index was too big"); 
} 
else 
{ 
    Data[i] = tmp; 
} 

[编辑] @向下选民:我知道它不工作,我只是想鼓励OP为他/她自己尝试它

+4

由于在调用'sscanf'之前必须计算'Data [i]',所以这是行不通的。 – ildjarn