我有一个由空格分隔的数字组成的输入字符串,如"12 23 34".
输出应该是整数数组.
我尝试了以下方法:
while (sscanf(s, "%d", &d) == 1) {
arr[n++] = d;
}
Run Code Online (Sandbox Code Playgroud)
但我发现因为我没有从文件中读取(自动调整偏移量),
所以我d每次都会保存相同的数字.
然后我尝试了这个:
while (sscanf(s, "%d", &d) == 1) {
arr[n++] = d;
s = strchr(s, ' ');
}
Run Code Online (Sandbox Code Playgroud)
手动s切换到新号码.
我认为应该可以正常工作.我根本不明白它失败的原因.
小智 5
scanf提供了一个优雅的答案:%n转换,它告诉你到目前为止已消耗了多少字节.
像这样使用它:
int pos;
while (sscanf(s, "%d%n", &d, &pos) == 1) {
arr[n++] = d;
s += pos;
}
Run Code Online (Sandbox Code Playgroud)