gpt4 book ai didi

c - 为什么 scanf 将值传递给我的函数,不希望 scanf 将值发送给被调用者

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:54 29 4
gpt4 key购买 nike

<分区>

我知道 scanf() 的用法,不鼓励使用。但我遇到了问题,scanf 将标准输入值发送到下一个函数标准输入。我想知道为什么会这样。

代码:

#include <stdio.h>

void ffgets() {
char name[40];
printf("What's your name? ");
if (fgets(name, 40, stdin)) {
printf("Hello %s", name);
}
}

int main(int argc, char **argv) {
int a;
printf("enter a number: ");

int res = scanf("%d", &a);
if (res > 0) {
printf("Valid Integer %d.\n", a);
} else {
printf("It's not a number\n");
}

ffgets();
return 0;
}

输出:

测试用例 1:

为什么函数不要求标准输入,它只是打印空字符串

 ./a.out 
enter a number: 23
Valid Integer 23.
What's your name? Hello

测试用例 2:我输入了带有传递名称的特殊字符的字符串。

./a.out 
enter a number: random##¤
It's not a number
What's your name? Hello random##¤

我不想将 main 中的标准输入值传递给函数,该怎么做?

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