gpt4 book ai didi

c++ - 我们不使用双数组是什么?

转载 作者:行者123 更新时间:2023-12-01 14:11:35 25 4
gpt4 key购买 nike

我遇到了这段代码

输入:

3
0.1227...
0.517611738...
0.7341231223444344389923899277...
int N; 
char x[110];
int main() {
scanf("%d\n", &N);
while (N--) {
scanf("0.%[0-9]...\n", &x);
printf("the digits are 0.%s\n", x);

而且我无法理解一些事情:

1.为什么我们不使用 double 数组(因为输入值是 双)?

2.这三个点有什么作用 ...在 [0-9] 之后的 scanf 中 服务?和

3.为什么我们不使用任何格式 说明符(在本例中为 d) [0-9] 在 scanf 中?

最佳答案

Why aren't we using a double array(since the input value is double)?

输入可以被捕获为 double以及人物。 double确实有有效数字的限制。无论出于何种原因,您的代码都将输入存储为字符。

What purpose do those three dots ... in scanf after [0-9] are serving?

这三个点没有任何用途,除非它们是输入的一部分,然后在下一个 scanf 之前最多删除三个点. 0,123 的输入将被成功扫描,0.123... .如果输入是 0.123abc abc将留在输入流中并导致当前代码出现问题。

Why are we not using any format specifier (d in this case) after [0-9] in scanf?

%[]是格式说明符。有时称为扫描集。它存储字符。它可以是包容性的,也可以是排他性的。
%[0-9]是包容的。它将接受数字。它将在第一个不是数字的字符处停止。
一个 d跟随说明符的行为与点相同。与 0.%109%[0-9]d , 0.123down 的输入将扫描 0.123d离开own在输入流中,以便稍后在当前代码中引起问题。
提供数组限制以防止向数组写入太多字符是一种很好的做法。对于 [110] 使用 %109[0-9] .这允许一个字符作为终止零。

编辑:代码示例

#include <stdio.h>

int N;
char x[110];

int main ( void) {
scanf("%d\n", &N);
while (N--) {
scanf(" 0.%109[0-9]...", x);
printf("the digits are 0.%s\n", x);
}
return 0;
}

关于c++ - 我们不使用双数组是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61192916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com