导航:首页 > 源码编译 > 编译输出和标准输出

编译输出和标准输出

发布时间:2022-08-18 07:11:49

1. 关于C语言标准输出函数printf的问题

这个问题考察的是运算符的优先级,++和--的优先级高于取反(-)
i++(或者i--)表示先取用i的值,然后再进行自加(或者自减)运算
++i(或者--i)表示先对i进行自加(或者自减)运算,再取用i的新值
多数编译器会从右向左对参数压栈,所以printf函数会从右向左依次计算参数值。
i=8,->(-i--)=-8,此时i=7
->(-i++)=-7,此时i=8
->(i--)=8,此时i=7
->(++i)=8,此时i=8
->(--i)=7,此时i=7
->(++i)=8,此时i=8
->i=8
但是,压栈顺序没有硬性规定,所以不同编译器可能有不同的压栈操作,结果会有不同

2. linux输出·输入文件和标准输入 标准输出是什么意思啊

Unix/Linux/BSD 都有三个特别文件,分别
1)标准输入 即 STDIN , 在 /dev/stdin ,
一般指键盘输入, shell里代号是 0
2) 标准输出 STDOUT, 在 /dev/stdout,
一般指终端(terminal), 就是显示器, shell里代号是 1
3) 标准错误 STDERR, 在 /dev/stderr
也是指终端(terminal), 不同的是, 错误信息送到这里
shell里代号是 2

2, 3用些例子再表达一下

User@User-PC ~
$ ls /dev/stdin
/dev/stdin@

User@User-PC ~
$ ls -l /dev/std*
lrwxrwxrwx 1 User Users 15 Mar 1 2008 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 User Users 15 Mar 1 2008 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 User Users 15 Mar 1 2008 /dev/stdout -> /proc/self/fd/1

就是这些东西了,呵呵

User@User-PC ~
$ ls 1> log1.txt

User@User-PC ~
$ cat log1.txt
Mail/
News/
a.txt
aa*
awkscr
b.txt
bb*
bin/
cc
cgitest.rex*
dd*
irc-sh*
junk
lib/
log1.txt
lynx.cfg
matrix/
perlscr*
pp*
rexx_script/
rrr
testawk
tmp/
trash

将标准输出导向到文件, 缩写就是 ls > log1.txt

User@User-PC ~
$ ls llll 1> log2.txt
ls: 无法存取 llll: No such file or directory

再次执行,但这次没有这个文件llll, 出现错误讯息

User@User-PC ~
$ cat log2.txt

User@User-PC ~
$ file log2.txt
log2.txt: empty

输出没有导向到文件,文件是空文件

User@User-PC ~
$ ls llll 2> log2.txt

User@User-PC ~
$ cat log2.txt
ls: 无法存取 llll: No such file or directory

User@User-PC ~
$

再次执行刚才的命令,只是将 1> log2.txt 改为 2> log2.txt
这次就成功把错误讯息导向至文件了,呵呵,
就是这样
所以,将标准输出和标准错误 一同导向到一个文件里,就得这样表达

命令 2>&1 > 档案, 如
User@User-PC ~
$ echo 123 | if grep -E '[0-9]+' 2>&1 > /dev/null ; then echo "This is number."; fi
This is number.

grep 标准输出和标准错误 都导向到系统‘黑洞’,不会再屏幕上显示什么
, 明白了吧? 呵呵

3. 求大神……解释一下…c语言中: “printf是c语言编译系统提供的标准输出函数,其声明

具体的函数体文件没有放在头文件中,而是放在其他的.c文件中,但是函数声明放在了stdio.h中,比如说,我在Hello.c文件中写了函数体:
void outPut()
{
printf("Hello,world!");
}
但是我想在其他的文件中使用这个函数,那么我就在自定义的头文件"OutPut.h"中声明函数即可:
void outPut();
当我想在其他的文件中使用outPut函数,我只需要包含此头文件就可以了:譬如,我想在Thank.c文件中使用,我只需在文件头使用#include“OutPut.h”,调用的时候只需要直接调用outPut();就可以直接调用了。你以后如果做工程的话老师会给你们讲的,你可以在visiual c++6.0中先自己建立一个工程练一练。

4. 在C语言中标准输入输出语句应该如何编写操作

Turbo C 2.0标准库提供了两个控制台格式化输入、输出函数 scanf();和printf();这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。scanf()函数用来从标准输入设备(键盘)上读数据,printf()函数用来向标准输出设备(屏幕)写数据。下面详细介绍这两个函数的用法。
1.标准输入语句
scanf()函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息。其调用格式为:scanf(<格式化字符串>,<地址表>);
格式化字符串包括以下三类不同的字符;
(1).空白字符:空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。
(2).非空白字符:一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
(3).格式化说明符:以%开始,后跟一个或几个规定字符,用来确定输出内容格式。

5. C++ cout, clog,cerr

cerr与cout的主要区分就是,cout输出的信息可以重定向,而cerr只能输出到标准输出(显示器)上。

例如下面程序编译后生成test.exe
// test.cpp

#include <iostream.h>

int main()
{
cout << "hello world---cout" << endl ;
cerr << "hello world---cerr" << endl ;
return 0;
}

在命令行模式下键入下面的命令:
test >>cout.txt

运行结果是:
在生成的cout.txt文件中输出了"hello world---cout"
同时在显示器上输出了"hello world---cerr"
也就是说cout的输出可以重定向到一个文件中,而cerr必须输出在显示器上。
clog流也是标准错误流,作用和cerr一样,区别在于cerr不经过缓冲区,直接向显示器输出信息,而clog中的信息存放在缓冲区,缓冲区满或者遇到endl时才输出.

对于为什么有cerr和clog
比如,你的程序遇到调用栈用完了的威胁(无限,没有出口的递归)。

你说,你到什么地方借内存,存放你的错误信息?

所以有了cerr。其目的,就是在你最需要它的紧急情况下,还能得到输出功能的支持。

缓冲区的目的,就是减少刷屏的次数——比如,你的程序输出圣经中的一篇文章。不带缓冲的话,就会每写一个字母,就输出一个字母,然后刷屏。有了缓冲,你将看到若干句子“同时”就出现在了屏幕上(由内存翻新到显存,然后刷新屏幕)。

6. 在C语言中标准输出语句如何才是正确的运用

printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:
printf(<格式化字符串>,<参量表>);
其中格式化字符串包括两部分内容:一部分是正常字符,
这些字符将按原样输出;另一部分是格式化规定字符,以%开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用,分开,且顺序一一对应,否则将会出现意想不到的错误。

7. stdio 是什么意思

stdio 就是指 “standard input & output"(标准输入输出)所以,源代码中如用到标准输入输出函数时,就要包含这个头文件。

例如c语言中的printf("%d",i);scanf("%d",&i);等函数。

一般地,在C语言或C++中,会把用来#include的文件的扩展名叫 .h,称其为头文件。 #include文件的目的就是把多个编译单元(也就是c或者cpp文件)公用的内容,单独放在一个文件里减少整体代码尺寸;或者提供跨工程公共代码。在现行的c++版本中,应用这个头文件应是#include<cstdio>。

(7)编译输出和标准输出扩展阅读:

标准函数

intgetchar()//从标准输入设备读入一个字符

intputchar()//向标准输出设备写出一个字符

intscanf(char*format[,argument…])//从标准输入设备读入格式化后的数据

intprintf(char*format[,argument…])//向标准输出设备输出格式化字符串

chargets(char*string)//从标准输入设备读入一个字符串

intputs(char*string)//向标准输出设备输出一个字符串

intsprintf(char*string,char*format[,…])//把格式化的数据写入某个字符串缓冲区

8. C语言中什么是标准输入和标准输出

执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;
标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。

9. c语言关于标准输入和标准输出

while循环在getchar()获取的是结束符时跳出循环。

getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续 getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键. (from网络)

10. C语言输出格式和类型

  1. C语言里通过printf函数,可以输出任意格式和任意类型。

  2. printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
    printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)。
    格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
    原型:extern void printf(const char *format,...);
    功能:在c语言中产生格式化输出的函数(定义在 stdio.h 中),其向终端(显示器、控制台等)输出字符。
    用法:
    format
    Format 参数是包含三种对象类型的一个字符串:
    * 无格式字符复制到输出流;
    * 转换规范,每个规范导致在值参数列表中检索 1 个或更多个项;
    * 转义序列。
    通常意义上format的格式如下:
    %[flags][width][.prec][F|N|h|l]type
    规定输出数据的格式,具体如下:[1]
    type
    type的字符用于规定输出数据的类型,含义如下:
    字符 对应数据类型 含义
    d / i int 接受整数值并将它表示为有符号的十进制整数,i是老式写法
    o unsigned int 无符号8进制整数(不输出前缀0)
    u
    unsigned int 无符号10进制整数
    x / X
    unsigned int 无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)
    f(lf)
    float(double) 单精度浮点数用f,双精度浮点数用lf(尤其scanf不能混用)
    e / E
    double 科学计数法表示的数,此处"e"的大小写代表在输出时用的“e”的大小写
    g / G
    double 使用以上两种中最短的形式,大小写的使用同%e和%E
    c
    char 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
    s / S
    char * / wchar_t * 字符串。输出字符串中的字符直至字符串中的空字符(字符串以'‘结尾,这个''即空字符)
    p
    void * 以16进制形式输出指针
    n int * 到此字符之前为止,一共输出的字符个数,不输出文本
    %
    无输入
    不进行转换,输出字符‘%’(百分号)本身
    m 无 打印errno值对应的出错内容,(例: printf("%m "); )
    注:%g、%G在小数点位数四位或指数大于等于精度时用%e、%E,否则用%f。
    flags
    flags 规定输出样式,取值和含义如下:
    字符
    字符名称 说明
    - 减号 左对齐,右边填充空格(默认右对齐)
    +
    加号 在数字前增加符号 + 或 -
    0
    数字零 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用“-”)
    空格 输出值为正时加上空格,为负时加上负号
    #
    井号
    type是o、x、X时,增加前缀0、0x、0X
    type是e、E、f、g、G时,一定使用小数点
    type是g、G时,尾部的0保留
    width
    用于控制显示数值的宽度,取值和含义如下:
    n(n=1,2,3...): 宽度至少为n位,不够以空格填充。
    * 格式列表中,下一个参数还是width
    width是一个可选的指定最小值字段宽度的十进制数字字符串。如果转换值字符少于字段宽度,该字段将从左到右按指定的字段宽度填充。如果指定了左边调整选项,字段将在右边填充。如果转换结果宽于字段宽度,将扩展该字段以包含转换后的结果。不会发生截断。然而,小的精度可能导致在右边发生截断。
    prec
    用于控制小数点后面的位数,取值和含义如下:
    无按缺省精度显示0
    当type=d,i,o,u,x时,没有影响;
    type=e,E,f时,不显示小数点
    n(n=1,2,3...)
    当type=e,E,f时表示的最大小数位数;
    type=其他,表示显示的最大宽度
    prec是指可选的精度。精度是一个 .(点)后跟十进制数字字符串。如果没有给出精度,按 0(零)对待。精度指定:
    * d、o、i、 u、x 或 X 转换的最少数字显示位数。
    * e 和 f 转换的基数字符后的最少数字显示位数。
    * g 转换的最大有效数字位数。
    * s 转换中字符串的最大打印字节数目。
    F|N|h|l
    表示指针是否是远指针或整数是否是长整数
    F 远指针
    N 近指针
    h 短整数(short int)
    l 长整数(long int) (此处如果与d搭配为%lld则为long long int(C99),与f搭配为%llf则为long double(C99))
    [Argument]
    包含需要输出的数据,可以是常量(字符常量、数字常量、字符串常量),变量,以及运算式。此处的数据应当与前面的format中的格式控制符一一对应(如果不对应会产生错误)。

阅读全文

与编译输出和标准输出相关的资料

热点内容
职业生涯pdf 浏览:954
ubuntu安装软件php 浏览:159
黑马程序员退学流程 浏览:362
网页服务器崩溃怎么回事 浏览:651
cnc编程前景怎么样 浏览:320
lniux命令详解 浏览:494
linuxmysql查询日志 浏览:369
老捷达伙伴压缩比 浏览:94
改后缀加密 浏览:433
邮局选址问题算法 浏览:15
河北服务器内存云主机 浏览:13
在电脑上怎么找到加密狗图标 浏览:437
电脑的浏览器怎么打开pdf文件怎么打开 浏览:144
pdf卡片库下载 浏览:13
单片机中二进制表示什么 浏览:726
java网络编程推荐 浏览:797
施耐德开关编程 浏览:68
组织胚胎学pdf 浏览:846
linux查看发包 浏览:497
加密货币交易所暴利时代 浏览:826