C中扫描集的意外输出
正如预期的那样,这一进展。应该接受一个数字,直到它遇到4,但它给出了一些垃圾值。为什么?C中扫描集的意外输出,c,set,C,Set,正如预期的那样,这一进展。应该接受一个数字,直到它遇到4,但它给出了一些垃圾值。为什么? int main(void) { int a; printf("Enter a number: "); scanf("%[^4]d", &a); printf("You entered: %d\n", a); return 0; } 据我所知,扫描集用于字符串(这使得d不能用作整数占位符规范)。一种写入方法是将输入读入字符串,然后对其进行解析: in
int main(void)
{
int a;
printf("Enter a number: ");
scanf("%[^4]d", &a);
printf("You entered: %d\n", a);
return 0;
}
据我所知,扫描集用于字符串(这使得
d
不能用作整数占位符规范)。一种写入方法是将输入读入字符串,然后对其进行解析:
int main(void)
{
int a;
char b[255];
printf("Enter a number: ");
scanf("%254[^4]", &b);
a = atoi(b);
printf("You entered: %d\n", a);
return 0;
}
我将修改后的代码保持在最低限度,您肯定需要额外检查输入的合理性
澄清:前缀
254
限制了scanf
将捕获的数据量,以便不超过缓冲区的大小(字符串以额外的空字符结尾,因此读取长度必须小于实际大小)。据我所知,扫描集用于字符串(这使得d
不能用作整数占位符规范)。写入它的一种方法是将输入读入字符串,然后对其进行解析:
int main(void)
{
int a;
char b[255];
printf("Enter a number: ");
scanf("%254[^4]", &b);
a = atoi(b);
printf("You entered: %d\n", a);
return 0;
}
我将修改后的代码保持在最低限度,您肯定需要额外检查输入的合理性
澄清:前缀
254
限制了scanf
将捕获的数据量,以便不超过缓冲区的大小(字符串以额外的空字符结尾,因此读取长度必须小于实际大小)。据我所知,扫描集用于字符串(这使得d
不能用作整数占位符规范)。写入它的一种方法是将输入读入字符串,然后对其进行解析:
int main(void)
{
int a;
char b[255];
printf("Enter a number: ");
scanf("%254[^4]", &b);
a = atoi(b);
printf("You entered: %d\n", a);
return 0;
}
我将修改后的代码保持在最低限度,您肯定需要额外检查输入的合理性
澄清:前缀
254
限制了scanf
将捕获的数据量,以便不超过缓冲区的大小(字符串以额外的空字符结尾,因此读取长度必须小于实际大小)。据我所知,扫描集用于字符串(这使得d
不能用作整数占位符规范)。写入它的一种方法是将输入读入字符串,然后对其进行解析:
int main(void)
{
int a;
char b[255];
printf("Enter a number: ");
scanf("%254[^4]", &b);
a = atoi(b);
printf("You entered: %d\n", a);
return 0;
}
我将修改后的代码保持在最低限度,您肯定需要额外检查输入的合理性
澄清:前缀254
限制了scanf
将捕获的数据量,以便不超过缓冲区的大小(字符串以额外的空字符结尾,因此读取长度必须小于实际大小)。仅使用字符的工作
这是我的示例代码。(但是,我不知道您真正想要什么。)
此外,如果需要整数值,请使用。仅处理字符
这是我的示例代码。(但是,我不知道您真正想要什么。)
此外,如果需要整数值,请使用。仅处理字符
这是我的示例代码。(但是,我不知道您真正想要什么。)
此外,如果需要整数值,请使用。仅处理字符
这是我的示例代码。(但是,我不知道您真正想要什么。)
此外,如果需要整数值,请使用。注意,该格式永远不会读取请求的
d
,因为如果数据中有d
,它将作为扫描集匹配的字符串的一部分读取(因为d
不是数字4
)。您还需要认识到,扫描集用于字符串,而不是整数-这就是为什么d
只是格式字符串中的文字字符,而不是转换规范的一部分。请注意,该格式永远不会读取请求的d
,因为如果数据中有d
,它将是read作为扫描集匹配的字符串的一部分(因为d
不是数字4
)。您还需要认识到,扫描集用于字符串,而不是整数-这就是为什么d
只是格式字符串中的文字字符,而不是转换规范的一部分。请注意,该格式永远不会读取请求的d
,因为如果数据中有d
,它将是read作为扫描集匹配的字符串的一部分(因为d
不是数字4
)。您还需要认识到,扫描集用于字符串,而不是整数-这就是为什么d
只是格式字符串中的文字字符,而不是转换规范的一部分。请注意,该格式永远不会读取请求的d
,因为如果数据中有d
,它将是read作为扫描集匹配的字符串的一部分(因为d
不是数字4
)。您还需要认识到,扫描集用于字符串,而不是整数-这就是为什么d
只是格式字符串中的文字字符,而不是转换规范的一部分。请注意,s
是文字s
,而不是扫描集转换规范的一部分。另请参阅我对问题,指的是问题中的d
。但你是对的,扫描集用于字符串,而不是整数,但扫描集不包括s
。请注意,s
是一个文本s
,不是扫描集转换规范的一部分。另请参阅我对问题的评论,参考s
。请注意s
是一个文本s
,而不是扫描集转换规范的一部分。另请参阅我对问题的评论,参考问题中的d
。B但是你是对的,扫描集是针对字符串的,不是针对整数的,但是扫描集不包括