Jav*_*lez 1 c initialization scanf char
我确定这里只是一个愚蠢的错误,然而,我无法弄明白.这是我的代码的一部分:
char *moving;
scanf("%s", moving);
Run Code Online (Sandbox Code Playgroud)
当我用gcc编译它时,它说如下:
newmatrix.c:38:7: warning: ‘moving’ is used uninitialized in this function [-Wuninitialized]
Run Code Online (Sandbox Code Playgroud)
第38行是scanf
我该如何解决?谢谢
你可以在打电话之前分配内存scanf().例如:
char moving[256];
if (scanf("%255s", moving) != 1)
…oops — presumably EOF…
Run Code Online (Sandbox Code Playgroud)
您可以使用malloc()而不是简单的数组,但是您必须记住释放分配的内存.OTOH,如果你想从读取它的函数返回数据,它可能更方便使用malloc(),但考虑将指针传递给函数的空间(及其大小?).
或者你可以scanf()为你做内存分配(仔细检查手册页scanf()- 每周阅读一次,直到你记住它(足够)):
char *moving;
if (scanf("%255ms", &moving) != 1)
…oops — probably EOF, but perhaps OOM (out of memory)…
…use moving…
free(moving);
Run Code Online (Sandbox Code Playgroud)
是的,这是POSIX标准中鲜为人知的选项之一scanf(); 它不是标准C的一部分.