精华内容
下载资源
问答
  • C 中printf无法输出问题

    千次阅读 2019-10-24 18:42:37
    在c++编程过程中遇到printf()函数无法输出的问题,但是代码没有问题,使用puts()函数可以正常输出。 原因系统缓冲区问题。有三个解决办法: 1.添加换行符 printf("XXXXXXX \n"); 2.输出后手动刷新系统缓冲区 ...

    在c++编程过程中遇到printf()函数无法输出的问题,但是代码没有问题,使用puts()函数可以正常输出。
    原因为系统缓冲区问题。有三个解决办法:

    1.添加换行符

    printf("XXXXXXX \n");

    2.输出后手动刷新系统缓冲区

    fflush(stdout);

    3.预先设定无缓冲区

    setvbuf(stdout, NULL, _IONBF, 0);
     

    展开全文
  • C printf无法输出问题

    万次阅读 2017-09-22 08:16:22
    今天碰到了一个问题,用prinf输出的时候怎么也打不出来,后来查了下是字符串后面得加\n,不然可能输出不了。链接在这里。 https://stackoverflow.com/questions/9317529/when-does-printf-fail-to-print

    今天碰到了一个问题,用prinf输出的时候怎么也打不出来,后来查了下是字符串后面得加\n,不然可能输出不了。链接在这里。

    https://stackoverflow.com/questions/9317529/when-does-printf-fail-to-print

    展开全文
  • linux c printf 不能输出

    千次阅读 2018-12-20 20:09:02
    对于标准输出,需要输出的数据并是直接输出到终端上,而是首先缓存到某个地方,当遇到行刷新标志或者该缓存已满的情况下,才会把缓存的数据显示到终端设备上。 ANSI C中定义换行符'\n'可以认为是行刷新标志。所以...

    原因:  输出缓冲区的问题.

    unix上标准输入输出都是带有缓存的,一般是行缓存。

    对于标准输出,需要输出的数据并不是直接输出到终端上,而是首先缓存到某个地方,当遇到行刷新标志或者该缓存已满的情况下,才会把缓存的数据显示到终端设备上。

    ANSI C中定义换行符'\n'可以认为是行刷新标志。所以,printf函数没有带'\n'是不会自动刷新输出流,直至缓存被填满。

    解决方案:

    方案1、在printf里加"\n"  (注意在clion 调试中无效,建议使用方案2 )

    方案2、fflush(stdout) 刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上 。


      fflush(stdout); //  刷新一下缓冲区 让它马上输出.  在printf 之后调用它,就会马上输出了.  
      setvbuf(stdout,NULL,_IONBF,0); //如果你嫌上个方法麻烦, 就使用这个函数. 直接将缓冲区禁止了. 它就直接输出了。

    这两个函数都是有关流缓冲区的. 具体使用和说明网上有很多.   我只说一下什么是流缓冲区, 是做什么用的。

      操作系统为减少 IO操作 所以设置了缓冲区.  等缓冲区满了再去操作IO. 这样是为了提高效率。

    下面是测试代码:

    方案1:

    #include<stdio.h>
    #include<unistd.h>
     
    void main()
    {
            int i;
            for(i=0;i<10;i++)
            {
                    printf("\r %d%% is complete.\n",i);
                    sleep(1);
            }
            printf("\n");
    }
    
    


    方案2:

    #include<stdio.h>
    #include<unistd.h>
     
    void main()
    {
            int i;
            for(i=0;i<10;i++)
            {
                    printf("\r %d%% is complete.",i);
                    fflush(stdout);
                    sleep(1);
            }
            printf("\n");
    }
    #include<stdio.h>
    #include<unistd.h>
     
    void main()
    {
            int i;
            setvbuf(stdout,NULL,_IONBF,0); //直接将缓冲区禁止了. 它就直接输出了
            for(i=0;i<10;i++)
            {
                    printf("\r %d%% is complete.",i);
                    sleep(1);
            }
            printf("\n");
    }

     

    展开全文
  • 来源:为什么printf不能用%lf输出double型,而用%f? printf("%lf",a); 今天看到一篇好文章,mark一下。 出去旅游了一下,所以有些天没敲代码,于是又弱爆了~忘掉了题目中的东西,结果出现了问题,好难找哈~ 死...

    来源:为什么printf不能用%lf输出double型,而用%f?

    printf("%lf",a);

    今天看到一篇好文章,mark一下。

    出去旅游了一下,所以有些天没敲代码,于是又弱爆了~忘掉了题目中的东西,结果出现了问题,好难找哈~

    死记硬背是很难记住一些东西的,只有理解原理才记得深入!奋斗

     

     

    注意scanf函数和printf函数是不同寻常的函数,因为它们都没有将函数的参数限制为固定数量。scanf函数和printf函数又可变长度的参数列表。当调用带可变长度参数列表的函数时,编译器会安排float参数自动转换成为double类型,其结果是printf函数无法区分float型和double型的参数。因此在printf函数调用中%f既可以表示float型又表示double型的参数。

          另一方面,scanf函数是通过指针指向变量的。%f告诉scanf函数在所传地址位置上存储一个float型值,而%lf告诉scanf函数在所传地址位置上存储一个double型值。这里float和double的区别是非常重用的。如果给出了错误的转换说明,那么scanf函数将可能存储错误的字节数量(没有提到的是,float型的为模式可能不同于double型的位模式)。

           另外历史原因C语言中浮点计算一直采用双精度的形式。

           附录说明:IEEE浮点标准的两种主要的浮点数格式:单精度(32位)和双精度(64位)。数值以科学计数法的形式存储,每一个数都是由3部分组成:符号、指数和小数。

                               EEE754浮点标准
    EEE754标准在表示浮点数时,每个浮点数均由三部分组成:符号位S,指数部分E和尾数部分M。

    我们知道10进制数的科学计数法如A= -3.5×105 

    这里最前面有一个负号,3.5是尾数,两个有效数字,后面以10为基数的指数为5。
    我们可以将它表示为 -3.5E5 

    同样,二进制数也可以用科学计数法规格化表示,比如5这个数,如果用二进制表示的话,整型为101,如果用科学计数法则可以表示为 1.25×24 ,这里用的是十进制,将尾数换成二进制就是1.01(就是101向前移两位小数点,和十进制完全相同),后面的指数4换成二进制则是10,那我们将其用二进制的科学计数法就可以写成1.01E10。

    当我们依照这种计数法给一个数字确定其精度(有效位)后,就可以用一定长度的1和0的位串来表示一个实数了。 

    浮点数一般采用以下四种基本格式:

    (1)单精度格式(32位):除去符号位1位后,E占8位,M占23位。

    (2)扩展单精度格式:E>=11位,M31位。

    (3)双精度格式:(64位);E=11位,M=52位。

    (4)扩展双精度格式:E>=15位,M>63位。

    我们最重要的是掌握单精度格式的表示法。在IEEE754标准中,约定小数点左边隐含有一位,通常这位数就是1,这样实际上使尾数的有效位数为24位,即尾数为1.M。指数的值在这里称为阶码,为了表示指数的正负,所以阶码部分采用移码表示,移码值为127,阶码值即从1到254变为-126至+127,在 IEEE754中所有的数字位都得到了使用,明确地表示了无穷大和0,并且还引进了"非规格化数",使得绝对值较小的数得到更准确表示。请看下表:

    S(1位)      E(8位)             M(23位)             N(32位)  
    符             0                 0            (-1)S·2E-127·(1.M) 为规格化数                                     
                  0              不等于0       (-1)S·2-126·(0.M) 为非规格化数
    号        1到254之间          不等于0       (-1)S·2E-127·(1.M) 为规格化数
                 255             不等于0     NaN(非数值) 
    位            255                 0            无穷大  

    其中红色字0、1表示隐含位,注意当数字N为非规格化数或是0时,隐含位是0。

    记住了上面的表格就能算出所有IEEE标准的单精度二进制浮点数了,我们重点要会计算规格化数字的双向转换,并且理解二进制浮点数表示法的思想。

    展开全文
  • (点击传送门) Qt开发专栏:各种问题解决(点击传送门) 问题 开发时,一些常用的c库,如ffmpeg等,其自带的log和协助的调试信息输出是使用printf输出的。 原因 printf写入缓冲区没有输出 解决方法 1.设置缓存区,...
  • printf 函数啥没有输出

    千次阅读 2021-05-21 13:42:14
    printf 函数为什么没有输出???#include#include#include#include#includevoidhandler_sigtime(intsignu){switch(signu){caseSIGALRM:printf("receivesignalSIGALRM\n");break;caseSIGPROF:printf("receivesignal....
  • 对于标准输出,需要输出的数据并是直接输出到终端上,而是首先缓存到某个地方,当遇到行刷新标志或者该缓存已满的情况下,才会把缓存的数据显示到终端设备上。 ANSI C中定义换行符'\n'可以认为是行刷新标志。所以...
  • 近期研究设计模式,在程序输出时心血来潮用了c版本的printf,结果就蛋疼了,一直输出是乱码,  string s = "中国"; printf("%s" , s);//输出乱码 果断切换成c++版本的cout发现可以正常输出。于是上网找答案
  • C/C++【初级】printf不能直接输出string类型

    万次阅读 多人点赞 2017-02-16 18:19:35
    近期研究设计模式,在程序输出时心血来潮用了c版本的...于是上网找答案,居然惊讶的发现printf输出字符串是针对char *的,换言之,printf只能输出C语言中的内置数据,string不是c语言内置数据。更深入的来说:s这个stri
  • C++: printf不输出内容

    千次阅读 2017-09-14 20:14:55
    printf输出内容先放入缓冲区,然后缓冲区满足一定条件后,再输出到屏幕。缓冲区需要满足的条件: 1. 使用fflush(stdout)强制刷新。 2. 缓冲区已满。 3. scanf()要在缓冲区里取数据时会先将缓冲区刷新。 4. \...
  • C语言怎么用printf输出字符串。void main(){unsigned char *x = "ab,sdf,sad,23432,cc";data = x;printf("data = %c\n", *data);printf("data = %s\n", data);system("pause");}扩展资料:printf输出字符串的一些...
  • C语言初学,想知道为什么用visual c++6.0编程,printf("%B")不能正确显示%B,而puts函数却可以,求告知?
  • int*pa,a[]={1,2}; pa=a; printf(“%d”,pa[1]); 这个不用*,输入数组中的一个元素时要用&,而一个整形变量也要,那为什么他们输出的时候只有一个需要*?
  • printf()输出格式

    万次阅读 2017-09-02 23:25:55
    printf()函数将上述函数定义中format指向的C字符串写到标准输出。如果format中包含了格式说明符(以%开头的子序列),则format之后的附加参数将被格式化并插入到字符串中代替对应的说明符。参数1. format 包含了要...
  • c语言printf()输出格式大全

    万次阅读 多人点赞 2019-07-04 16:19:13
    (转载)原始出处未知 1.转换说明符 %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99) %c 字符 %d 有符号十进制整数 %f 浮点数(包括float和double) %e(%E) 浮点数指数输出[e-(E-)记数法] ...
  • printf()输出类型

    千次阅读 2019-06-29 22:58:27
    %d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 ...%g 把输出的值按照 %e 或者 %f 类型中输出长度较小的方式输出 %p 输出地址符 %lu 32位无符号整数 %llu 64位无符号整数 #include <stdio.h>...
  • printf函数输出字符

    千次阅读 2018-12-12 20:28:35
    #include&lt;stdio.h&gt; int main() {char c='a'; int i=97; printf("c=%c,c=%d\n",c,c); printf("i=%c,i=%d\n",i,i); return 0; &nbsp;}
  • 究其原因,就是因为输出内容停留在了输出缓冲区里,而没有及时输出到控制台界面,解决的方法很简单:在每个printf后加上fflush(stdout)即可,或者,像我一样,把printf用一个宏封装一下: #define OUTPUT_STR(str) ...
  • STM32使用printf打印输出到串口

    千次阅读 2019-03-07 16:12:21
    在串口调通后,想着使用printf这个C语言常用的打印输出。参考了一些大神的文章,整理过程如下:。 首先,在C语言中,我们使用printf函数是需要添加头文件#include&lt;stdio.h&gt;的,这样才能打印输出到...
  • 在linux系统下,printf函数是... 等语句的显示不能立刻显示在屏幕上,但是printf("p\n"); 可以. 为了解决这个问题可以通过:fflush(stdout);解决,即变成: printf("p"); fflush(stdout); 问题可以得...
  • printf() 输出控制符

    千次阅读 2020-06-24 19:39:03
  • Java格式化输出printf()详解

    千次阅读 多人点赞 2020-09-14 14:11:05
    本文通过实例详细介绍Java格式化输出 System.out.printf() 方法的使用、参数的含义、格式转换符使用时的注意事项。
  • C++中printf无法输出问题

    万次阅读 2017-05-24 21:37:33
    在c++编程过程中遇到printf()函数无法输出的问题,但是代码没有问题,使用puts()函数可以正常输出。 原因系统缓冲区问题。有三个解决办法:1.添加换行符printf("XXXXXXX \n");2.输出后手动刷新系统缓冲区fflush...
  • C++中printf在控制台中无输出

    千次阅读 2020-07-12 12:08:42
    1.c++中使用printf,需要添加stdio.h 2.使用printf后。发现控制台中没有输出, ...在程序开头使用使用setbuf方法,之后就可以每次使用printf就会输出在控制台中。setbuf()就方便很多了。 setbuf(std.
  • 消息队列使用+关于printf缓冲区的问题简单来讲故事的开头上代码分析一下debug的心路历程 简单来讲 printf是一个行缓冲函数,先写到缓冲区,满足条件后,才将缓冲区刷到对应文件中,刷缓冲区的条件如下: 1 缓冲区填...
  • C语言printf输出浮点数的精度问题

    千次阅读 2021-08-23 14:26:42
    相信学过C语言的人对printf这个函数再熟悉不过了,...这是C语言的默认输出6位,%f的输出让你觉得完全没问题,等等,似乎太对,不是说计算机不能精确表示浮点数吗?这里怎么精确表示呢? 稍等,请看下面的代码段。
  • 在C语言中,printf如何输出2个变量?

    千次阅读 2021-05-19 05:15:00
    表示输出总和,只需将输出总和和sum1更改为printf(“ sum =%d,Sum1 =%d / n”,sum,sum1);. %D表示输出格式是带小数点的整数.printf()函数的格式: printf(“ ”,);格式字符串包括两部分: 一个是普通字符,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,284,197
精华内容 513,678
关键字:

为什么printf不能输出