我确信这里有一个愚蠢的错误,但是我无法弄清楚。
这是我的代码的一部分:
char *moving;
scanf("%s", moving);
当我用 gcc 编译它时,它显示以下内容:
newmatrix.c:38:7: warning: ‘moving’ is used uninitialized in this function [-Wuninitialized]
第38行是scanf
我该如何解决?
谢谢
您可以在调用之前分配内存scanf()
。例如:
char moving[256];
if (scanf("%255s", moving) != 1)
…oops — presumably EOF…
你可以使用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);
是的,这是 POSIX 标准中鲜为人知的选项之一scanf()
;它不是标准 C 的一部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)