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
如何在Git bash中运行C程序?_C_Git Bash - Fatal编程技术网

如何在Git bash中运行C程序?

如何在Git bash中运行C程序?,c,git-bash,C,Git Bash,我在Windows上,使用GitBash运行我的c程序 我使用gcc来编译代码。当我做一个简单的printf(“你好,世界”)它可以工作,但当我尝试创建一个简单的程序来添加两个数字时,它什么也不做 它使用gcc-o sum.c进行编译,但是当我使用/sum运行它时,它什么也不做,但是当我在命令提示符下运行它时,它会正常运行 #include <stdio.h> int main(void) { int n1, n2; printf("Enter a number:

我在Windows上,使用GitBash运行我的c程序

我使用gcc来编译代码。当我做一个简单的printf(“你好,世界”)它可以工作,但当我尝试创建一个简单的程序来添加两个数字时,它什么也不做

它使用
gcc-o sum.c
进行编译,但是当我使用
/sum
运行它时,它什么也不做,但是当我在命令提示符下运行它时,它会正常运行

#include <stdio.h>

int main(void) {
    int n1, n2;

    printf("Enter a number: ");
    scanf("%d", &n1);
    printf("Enter another number: ");
    scanf("%d", &n2);

    int sum = n1 + n2;

    printf("Sum: %d\n", sum);
}
#包括
内部主(空){
int n1,n2;
printf(“输入一个数字:”);
scanf(“%d”&n1);
printf(“输入另一个数字:”);
扫描频率(“%d”和“n2”);
int sum=n1+n2;
printf(“总和:%d\n”,总和);
}

我尝试在git bash中输入值,并将此输出与cmd进行比较。我通过在这些
printf()语句之后添加
fflush(stdout)
解决了此问题:

printf("Enter first value: ");
fflush(stdout); // this
scanf("%d", &a);

printf("Enter second value: ");
fflush(stdout); // this
scanf("%d", &b);
只要刷新缓冲区,程序就会在打印后等待您的输入

工作示例屏幕截图:


那么它会在Windows命令提示符中生成预期的输出,但在Git Bash中却没有?这可能与刷新有关。我想支持这个问题,Git bash首先接受两个输入
a
b
,然后打印所有
printf()
语句,但在命令提示符和PowerShell中一切正常。我添加了如何在cmd和git bashIt中运行sum.c的屏幕截图,我也能理解,但您能解释一下吗。
fflush(stdout)
在这里实际做什么。为什么它不使用
fflush(stdout)
线程就可以在cmd中正常工作呢?在这种情况下,线程可能会对您有所帮助。@RohanBari很奇怪,同一个二进制文件根据它运行的shell有不同的行为。@Jabberwocky没错。这就是为什么我对这个问题投了赞成票,看到结果我真的很惊讶。