Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中扫描集的意外输出_C_Set - Fatal编程技术网

C中扫描集的意外输出

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

正如预期的那样,这一进展。应该接受一个数字,直到它遇到4,但它给出了一些垃圾值。为什么?

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
,不是扫描集转换规范的一部分。另请参阅我对问题的评论,参考问题中的de>d。但你是对的,扫描集用于字符串,而不是整数,但扫描集不包括
s
。请注意
s
是一个文本
s
,而不是扫描集转换规范的一部分。另请参阅我对问题的评论,参考问题中的
d
。B但是你是对的,扫描集是针对字符串的,不是针对整数的,但是扫描集不包括