【发布时间】:2012-11-18 22:34:13
【问题描述】:
int main(){
int i,j;
char *data = "1\n2\n";
sscanf(data, "%d", &i);
sscanf(data, "%d", &j);
printf("i=%d, j=%d\n", i, j);
return 0;
}
如果你run the code 你会看到这个
i=1, j=1
为什么j=1 在这里?不应该是2吗?我错过了一些非常基本的东西吗?
如果我使用sscanf(data, "%d\n%d", &i, &j);,它会显示正确的输出。但是现在下一个 sscanf 调用会重新从头开始读取吗? 这是为什么呢?如何正确阅读?
【问题讨论】:
-
您指定
data作为起点,不是吗?你还期待什么? -
是的,你错过了一些非常基本的东西,你从同一个地址开始,读取一个整数两次,然后两次得到相同的值。没有惊喜。