相关疑难解决方法(0)

printf()在scanf()之后在行缓冲模式下将不带换行符的字符串打印到stdout

我知道大多数终端默认处于行缓冲模式.即输出被缓冲,并且在遇到换行字符之前不会被引导到stdout.

所以我希望它什么都不打印(至少在填充缓冲区之前):

int main() {
    while(1) {
        printf("Haha");
        sleep(1);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它确实在很短的时间内打印出来.

如果我想每秒打印"哈哈",我可以在printf之后printf("Haha\n")或者fflush(stdout)之后做.(我知道这不是那么便携,但它仍然是一个解决方案)

现在我回想起非常经典的scanf程序(我添加了while(1)循环以防止程序退出时缓冲区刷新):

int main() {
    char char_in;
    while(1) {
        printf("Haha. Input sth here: ");
        scanf("%c", &char_in);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在程序打印Haha. Input sth here:(并等待我的输入).如果我删除scanf语句,它不在这里.为什么会这样?

谢谢.

c stdio

8
推荐指数
1
解决办法
530
查看次数

printf不打印到屏幕

如果我尝试在Windows 7上的Cygwin下运行以下简单代码,

#include <stdio.h>
int main() {
int i1, i2, sums;

printf( "Enter first integer\n" );
scanf( "%d", &i1 );

printf( "Enter second integer\n" );
scanf( "%d", &i2 );

sums = i1 + i2;
printf( "Sum is %d\n", sums );

return 0;
}
Run Code Online (Sandbox Code Playgroud)

它编译(通过gcc)没有问题,但是当我尝试执行它时,第一个语句("输入第一个整​​数")没有打印到终端,我必须输入两个连续的数字(例如3和4)在我得到之前

3
4
Enter first integer
Enter second integer
Sum is 7
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释这里发生了什么.这在MinGW下非常有效.

c cygwin stdio

5
推荐指数
3
解决办法
2万
查看次数

使用printf和scanf写入c不能按预期工作

所以我是C的新手.我正在使用带有MinGW编译器的eclipse.我在第二章使用scanf和printf函数,我的程序正在运行,但只有在我将三个int输入scanf函数后才将语句打印到控制台.

#include <stdio.h>
int main(void){
    int length, height, width, volume, dweight;

    printf("Enter the box length: ");
    scanf("%d", &length);
    printf("\nEnter the box width: ");
    scanf("%d", &width);
    printf("\nEnter the box height");
    scanf("%d", &height);

    volume = length * width * height;
    dweight = (volume + 165) / 166;

    printf("Dimensions: l = %d, w = %d, h = %d\n", length, width, height);
    printf("Volume: %d\n", volume);
    printf("Dimensional Width: %d\n", dweight);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

控制台输出:

8 (user input + "Enter" + key)
10 (user input + …
Run Code Online (Sandbox Code Playgroud)

c printf scanf

2
推荐指数
1
解决办法
5361
查看次数

printf 不在 eclipse 的控制台上打印?

#include<stdio.h>

int main() {
    int n, s, i;
    do {
        printf("n= "); // here is the problem ?
        scanf("%d", &n);
    } while (n<100 || n <= 0);
    s = 0;
    i = 0;
    while (i <= n) {
        i = i + 2;
        s = s + i;
    }
    printf("s=%d", s);
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在 eclipse c/c++ 中运行它,它不首先打印“n=”。但是当我在另一个 IDE(例如 DEV-C++ 或 VS 2017)中运行它时,它运行良好。当在 printf 之后添加这一行时,我按照我的预期运行了。

fflush(stdout);
Run Code Online (Sandbox Code Playgroud)

这里有什么问题 ?

c eclipse

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×4

stdio ×2

cygwin ×1

eclipse ×1

printf ×1

scanf ×1