我正在编译下面的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;
}
Run Code Online (Sandbox Code Playgroud)
Kei*_*son 10
代码是正确的,应该打印sum: 1785任何符合要求的实现.
这是一个猜测(更新:结果证明是正确的),但......
您已经命名了源文件test.c,并使用以下命令编译它:
$ gcc test.c -o test
Run Code Online (Sandbox Code Playgroud)
(或类似的东西)并执行它:
$ test
Run Code Online (Sandbox Code Playgroud)
它不产生任何输出.
问题是这test是一个标准的Unix命令(在某些shell中也是一个内置命令).当您为shell键入命令名时,它首先查找内置命令,然后查找$PATH环境变量中指定的目录中的可执行文件.
要在当前目录中执行命令,./请在名称前加上:
$ ./test
sum: 1785
$
Run Code Online (Sandbox Code Playgroud)
这适用于当前目录中的任何命令.有许多内置命令,您无法合理地避免与它们发生冲突.通过键入来培养在当前目录中运行可执行文件的习惯./whatever意味着名称冲突无关紧要.
(不要试图添加.到你的前面$PATH;这是危险的.想想如果你cd进入一个目录并输入ls会发生什么,如果那里发生了恶意ls命令.)
| 归档时间: |
|
| 查看次数: |
2077 次 |
| 最近记录: |