我可以在C++中做这样的事吗?Sscanf在C++中(读取值并同时赋值)
//int i,Data[];
//malloc Data[];
$sscanf(line,"Data[%d]=0x%d",i,Data[i]);
Data []是一个int数组,我试图根据一次读入的'i'的值来读取随机索引。
我可以在C++中做这样的事吗?Sscanf在C++中(读取值并同时赋值)
//int i,Data[];
//malloc Data[];
$sscanf(line,"Data[%d]=0x%d",i,Data[i]);
Data []是一个int数组,我试图根据一次读入的'i'的值来读取随机索引。
你可以这样来做:
int index, value;
sscanf(line, "Data[%d]=%d", &index, &value);
// Check if index is within bounds of the array here
Data[index] = value;
您需要的“&”,因为sscanf的需要指针作为参数。
是的..这就是我最终采取的行动。使用一个临时变量。但是你知道,我不是一个临时变量的粉丝。 – Jean
为什么不自己尝试一下?不要忘记,你需要将指针传递到你的价值观,即
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为他/她自己尝试它
由于在调用'sscanf'之前必须计算'Data [i]',所以这是行不通的。 – ildjarn
传递给函数的所有参数在函数调用之前都是“完全”评估的。 –