void pedir_diag(int* diag){
scanf("%i", &diag);
}
int main() {
int number;
pedir_diag(&number);
return 0;
}
当我编译时引入一个整数并期望 main 中的 number int 变量具有引入的值但未设置
我的代码中有这个,但我无法使用 scanf() 函数设置 diag 变量。
最佳答案
diag
已经是一个指针,因此在调用 scanf()
时不需要寻址运算符 (&
):
void pedir_diag(int *diag)
{
scanf("%d", diag);
}
但这样做有点愚蠢。您无法检查是否有错误输入。
更好:
#include <stdbool.h>
bool pedir_diag(int *diag)
{
return scanf("%d", diag) == 1; // *)
}
*) scanf()
返回成功转换的次数,因此如果成功转换的次数为 1,我们返回 true
。
用法:
#include <stdio.h>
int main(void)
{
int foo;
if (!pedir_diag(&foo)) {
fputs("Input error :(\n\n", stderr);
}
else {
// have fun with foo
}
}
关于c - 如何使用 scanf() 获取 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54896018/