Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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 - Fatal编程技术网

C 任何类型的输入扫描仪

C 任何类型的输入扫描仪,c,C,我正在尝试编写一个更简单的scanf版本。我希望基本上能够为指针分配在用户输入上扫描的任何内容,如下所示: int *p = (int) w_insc(); 下面是我的实现: void *w_insc() { void *temp = 0; scanf("???", &temp); return &temp; } 我不知道在scanf中如何分配format参数。我还认为返回即将销毁的变量的地址是不正确的,因此我考虑这样做: int *p = 0; p

我正在尝试编写一个更简单的scanf版本。我希望基本上能够为指针分配在用户输入上扫描的任何内容,如下所示:

int *p = (int) w_insc();
下面是我的实现:

void *w_insc()
{
    void *temp = 0;
    scanf("???", &temp);
    return &temp;
}
我不知道在scanf中如何分配format参数。我还认为返回即将销毁的变量的地址是不正确的,因此我考虑这样做:

int *p = 0;
p = (int) w_insc((int) p);
有人能帮忙吗你说得对。您可以通过返回一个指向使用malloc分配的内存区域的指针(尽管调用方必须记住释放此内存),或者将一个指针作为
w_insc
的参数,然后用返回的值填充指针来解决此问题

然而,在尝试实现
w_insc
功能时存在更广泛的问题。
w_insc
无法知道调用者的期望。仅仅因为调用者将
w_insc
的返回值强制转换为
int
,就不允许
w_insc
知道它应该返回
int
。C函数唯一可用的信息是它的一组参数,加上程序中的任何全局变量(全局变量通常是解决问题的错误方法)。请注意,C函数无法知道调用方将如何处理其返回值。因此,无法写入
w_insc
以不获取任何参数并根据调用方进行的某些转换返回正确扫描的内容

您可以将一个参数添加到
w_insc
,使声明成为

int w_insc(const char *format, ...)
这允许调用者传入一个格式字符串和一系列参数,详细说明他们期望从标准输入中得到什么。然而,在这个实现中,您刚刚用。。。另一个看起来很像scanf的函数

我的建议是:使用标准库函数,因为它们是标准化的,阅读您的代码的人会立即知道它的含义,而不必通读您所描述的
w_insc
这样一个几乎微不足道的包装器的定义