我正在使用编译以下C代码gcc
。在编译期间或运行时不会引发任何错误。我使用遍历了代码gdb
,最后给出的答案sum
是正确的,但printf()
屏幕上没有显示任何内容。我已经试过各种组合fprintf()
,printf()
和fflush()
,但没有任何工程。
我需要更改什么,以便程序将结果打印到stdout
?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num = 9;
int i, sum; i = 1, sum = 0;
while (i < 2 * num) {
sum = sum + i * i;
++i;
}
printf("sum: %d\n", sum);
fflush(stdout);
return 0;
}
该代码是正确的,并且应该打印sum: 1785
出任何符合要求的实现。
这是一个猜测(update:原来是正确的),但是...
您已命名源文件test.c
,并使用以下命令对其进行编译:
$ gcc test.c -o test
(或类似内容)并执行以下命令:
$ test
不会产生任何输出。
问题在于这test
是一个标准的Unix命令(在某些shell中也是一个内置命令)。在外壳上键入命令名称时,它首先查找内置命令,然后在$PATH
环境变量中指定的目录中查找可执行文件。
要在当前目录中执行命令,./
请在名称前添加:
$ ./test
sum: 1785
$
这适用于当前目录中的任何命令。有太多内置命令,您无法合理避免与它们发生冲突。通过键入来养成在当前目录中运行可执行文件的习惯,这./whatever
意味着名称冲突并不重要。
(不要试图将其添加.
到您的前端$PATH
;这很危险。请考虑一下,如果您cd
进入目录并键入ls
,如果那里存在恶意ls
命令,会发生什么情况。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句