小编Nav*_*ddy的帖子

我们必须使用`scanf("\n")`和`scanf("%*c")`的时候

在 C 中,当我们在or之前使用 ascanf("%s")或时,在输入时,第一个输入的末尾会有一个额外的内容,并且该额外内容将被传递到第二个输入并弄乱输入流。据我所知,我已经在两个不同的系统中使用相同的 gcc 编译器尝试了这些代码。但它每次都做了不同的事情。在第一个系统中,我必须使用 a来丢弃换行符。但在第二个系统中就没有这样的需要了。它自动丢弃换行符。scanf("%c")scanf("%s")scanf("%[^\n]")'\n'scanf("\n")

然后我尝试了三个代码,

代码1:

printf("Enter the name of the student: ");
scanf("%s", name);

printf("Enter the email of the student: ");
scanf("%s", email);
Run Code Online (Sandbox Code Playgroud)

在这里我不必忽略换行符,编译器没有任何问题。

代码2:

printf("Enter the name of the student: ");
scanf("%s", name);
scanf("%*c");

printf("Enter the email of the student: ");
scanf("%s", email);
Run Code Online (Sandbox Code Playgroud)

这里我只是添加了scanf("%*c")来丢弃换行符,这与 具有相同的结果code 1。但是,当我替换scanf("%*c")scanf("\n")输入时,输入再次混乱,我现在必须提供 3 个输入,因为它没有正确丢弃第一个换行符。

代码3:

char chr, s[100], sen[100];

scanf("%c", &chr);
scanf("\n");
scanf("%s", s);
scanf("\n");
scanf("%[^\n]%*c", …
Run Code Online (Sandbox Code Playgroud)

c whitespace scanf conversion-specifier

1
推荐指数
1
解决办法
936
查看次数

标签 统计

c ×1

conversion-specifier ×1

scanf ×1

whitespace ×1