void pedir_diag(int* diag){
scanf("%i", &diag);
}
int main() {
int number;
pedir_diag(&number);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我编译引入一个整数并期望main中的数字int变量具有引入的值但未设置
我有这个,在我的代码中但我无法使用scanf()函数设置diag变量.
diag已经是一个指针,所以&在调用中不需要address-of运算符()scanf():
void pedir_diag(int *diag)
{
scanf("%d", diag);
}
Run Code Online (Sandbox Code Playgroud)
但这样做有点愚蠢.您无法检查错误输入.
更好:
#include <stdbool.h>
bool pedir_diag(int *diag)
{
return scanf("%d", diag) == 1; // *)
}
Run Code Online (Sandbox Code Playgroud)
*)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
}
}
Run Code Online (Sandbox Code Playgroud)