C ++中的Sscanf(读入值并同时分配)

时间:2011-09-12 21:02:05

标签: c++ file scanf

我可以在C ++中做这样的事情吗?

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

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

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

2 个答案:

答案 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将指针作为参数。

答案 1 :(得分:-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为他/她自己尝试