`

C语言中标准输入流、标准输出流、标准错误输出流

阅读更多

C语言中标准输入流、标准输出流、标准错误输出流


在Linux中,所有对设备和文件的操作都使用文件描述符来进行。

Linux中一个进程启动时,都会打开3个文件:标准输入、标准输出和标准出错处理。这三个文件分别对应文件描述符0、1、2。

 

在C语言中,在程序开始运行时,系统自动打开3个标准文件:标准输入、 标准输出、标准出错输出。通常这3个文件都与终端相联系。因此,以前我们所用到的从终端输入或输出都不需要打开终端文件。系统自定义了3个文件指针stdin、stdout、stderr,分别指向终端输入、终端输出和标准出错输出(也从终端输出)。

标准输入流:stdin

标准输出流:stdout

标准错误输出流:stderr

 


测试代码:

#include <stdio.h>

int main()
{
        int a = 0;
        char szTmp[100] = {0};
        try
        {
                fprintf(stdout, "please input a:\n");
                fscanf(stdin, "%d", &a);
                fprintf(stdout, "a=%d\n", a);

                fprintf(stdout, "please input szTmp:\n");
                fscanf(stdin, "%s", szTmp);
                fprintf(stdout, "szTmp:%s\n", szTmp);
        }
        catch(...)
        {
                fprintf(stderr, "input error!");
        }

        return 0;
}
 



编译:

g++ -o a a.cpp


测试结果:

./a 

please input a:

123

a=123

please input szTmp:

aaaaaaaaaaaaaaaaaaaaaaa

szTmp:aaaaaaaaaaaaaaaaaaaaaaa



PS:相关文档

stdin


object

<cstdio>

FILE * stdin;

Standard input stream

The standard input stream is the default source of data for applications. It is usually directed to the input device of the standard console (generally, a keyboard).


stdin can be used as an argument for any function that expects an input stream as one of its parameters, like fgets or fscanf.


Although it is generally safe to assume that the source of data for stdin is going to be a keyboard, bear in mind that this may not be the case even in regular console systems, since stdin can be redirected at the operating system level. For example, many systems, among them DOS/Windows and most UNIX shells, support the following command syntax:


myapplication < example.txt


to use the content of the file example.txt as the primary source of data for myapplication instead of the console keyboard.


It is also possible to redirect stdin to some other source of data from within a program using the freopen function.

stdout



object

<cstdio>

FILE * stdout;

Standard output stream

The standard output stream is the default destination of regular output for applications. It is usually directed to the output device of the standard console (generally, the screen).


stdout can be used as an argument for any function that expects an output stream as one of its parameters, like fputs or fprintf.


Although it is generally safe to assume that the default destination for stdout is going to be the screen, bear in mind that this may not be the case even in regular console systems, since stdout can be redirected at the operating system level. For example, many systems, among them DOS/Windows and most UNIX shells, support the following command syntax:


myapplication > example.txt


to redirect the output of myapplication to the file example.txt instead of the screen.


It is also possible to redirect stdout to some other source of data from within a program using the freopen function.

stderr



object

<cstdio>

FILE * stderr;

Standard error stream

The standard error stream is the default destination for error messages and other diagnostic warnings. Like stdout, it is usually also directed to the output device of the standard console (generally, the screen).


stderr can be used as an argument for any function that expects an output stream as one of its parameters, like fputs or fprintf.


Although generally both stdout and stderr are associated with the same console output, applications may differentiate between what is sent to stdout and what to stderrfor the case that one of them is redirected. For example, it is frequent to redirect the regular output of a console program (stdout) to a file while expecting the error messages to keep appearing in the console screen.


It is also possible to redirect stderr to some other destination from within a program using the freopen function.

perror



function

<cstdio>

void perror ( const char * str );

Print error message

Interprets the value of the global variable errno into a string and prints that string to stderr (standard error output stream, usually the screen), optionaly preceding it with the custom message specified in str.

errno is an integral variable whose value describes the last error produced by a call to a library function. The error strings produced by perror depend on the developing platform and compiler.

If the parameter str is not a null pointer, str is printed followed by a colon (:) and a space. Then, whether str was a null pointer or not, the generated error description is printed followed by a newline character ('\n').

perror should be called right after the error was produced, otherwise it can be overwritten in calls to other functions.


Parameters.


str

C string containing a custom message to be printed before the error message itself.

If it is a null pointer, no preceding custom message is printed, but the error message is printed anyway.

By convention, the name of the application itself is generally used as parameter.


 

分享到:
评论

相关推荐

    C语言中的输入输出函数

    - **标准错误**(`stderr`):错误信息的输出位置。`perror()`函数也会将输出写到这里。在很多系统中,`stdout`和`stderr`默认指向同一个设备,但在必要时可以分开,确保即使标准输出被重定向,错误信息仍然显示在...

    简单的c语言中的有关输入输出语句的小程序

    4. **标准输入和标准输出**:在C语言中,有三个预定义的文件流,即标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)。默认情况下,键盘是标准输入的来源,屏幕是标准输出和标准错误输出的目的地。 5...

    c语言freopen文件流示例

    - **避免多次重定向**:不要在同一程序中多次对同一标准流进行重定向,除非有明确的需求。重复重定向可能会导致不可预料的行为。 - **资源管理**:使用完毕后,记得关闭文件,释放资源。虽然在程序结束时系统会自动...

    输入输出C语言经典例子的代码

    `stderr`则是标准错误输出,用于输出错误信息。 2. **基本输入输出函数** - `printf()`:这是C语言中最常用的输出函数,用于格式化输出。例如,`printf("Hello, %s!\n", "World");`会打印出"Hello, World!"。 - `...

    C语言规范标准-C99(中文版)

    - C99标准规定了C语言程序的语法、类型系统、运算符、控制流、预处理器、内存管理、输入/输出等各个方面。它旨在提供一种形式化的方法来解释源代码,确保不同实现下的编译器对同样代码的处理有明确一致的结果。 - ...

    C语言输入输出函数C语言输入输出函数

    C语言输入输出函数是C语言标准库中的输入输出函数,主要是为了处理输入输出操作提供了一些基本的函数。这些函数都定义在stdio.h头文件中,主要用于处理文件输入输出、格式化输入输出、字符串输入输出等操作。 1. ...

    C语言的谜题 | | 酷 壳 - CoolShell1

    C语言中有多种输入输出流,包括标准输入、标准输出和标准错误。标准输入是指从键盘或文件输入数据,标准输出是指将数据输出到屏幕上,标准错误是指将错误信息输出到屏幕上。例如: ```c #include int main() { ...

    C语言标准函数库源码,相当全的库函数源码!

    1. **I/O流(IO Stream)**:如`stdio.h`头文件中的函数,包括`printf`、`scanf`、`fopen`、`fclose`等,用于处理输入输出操作,如文件读写和屏幕打印。 2. **字符串处理(String Handling)**:如`string.h`头文件...

    输入输出流介绍

    本章节将详细解析传统C语言中标准I/O库的局限性,并阐述输入输出流如何提供一种更加高效、安全且易于使用的解决方案。 在C语言中,我们使用标准I/O库来进行文件的读写操作。然而,随着软件工程的发展以及对安全性、...

    C语言标准与实现.rar

    7. **输入/输出**:C语言的输入输出主要通过标准输入输出库stdio.h实现,包括printf和scanf等函数。理解缓冲区的概念和流的处理方式对于调试和优化程序很有帮助。 8. **错误处理和调试**:C语言没有内置的异常处理...

    C语言程序设计题库 第三章:标准设备的输入输出

    在C语言中,标准输入输出是程序与用户交互的基础,主要涉及`stdin`(标准输入)、`stdout`(标准输出)和`stderr`(标准错误)这三个流。本题库的章节聚焦于标准设备的输入输出,特别是如何通过格式化输入输出处理不同类型...

    文件管理和输入输出流.rar

    输入输出流是程序与外部数据源交互的桥梁,包括从键盘、文件、网络等源头读取数据(输入流)以及向显示器、文件、网络等目标写入数据(输出流)。Java的`InputStream`和`OutputStream`是所有字节流的基类,`Reader`...

    C语言多输入

    在C语言中,我们通常使用标准输入输出函数库中的`scanf`函数来读取用户的输入。`scanf`函数通过指定的格式字符串来解析输入的值,并根据格式字符串中的指示符将输入值存储在相应的变量中。在C语言中,实现多次输入的...

    C++键盘输入与屏幕输出

    iostream库包括和等头文件,其中提供了输入流的声明,提供了输出流的声明,而头文件则包含了对cin和cout等标准流对象的定义。在程序中使用输入输出流,需要包含iostream头文件,即使用预处理指令#include。 cout...

    标准c语言笔记.pdf

    标准输入输出包括了对标准输入输出流的操作,如stdin、stdout等。 文件的输入输出涉及到了文件操作相关的函数,比如fopen、fclose、fread、fwrite等,用于实现对文件的读写操作。可变参数函数允许函数接受不同数量...

    C语言标准库函数的源代码

    C语言的标准库是其核心组成部分,包含了各种常用的函数,如输入输出、字符串处理、数学运算等。这个压缩包文件“C语言标准库函数的源代码”提供了一个深入了解C语言内部机制的机会,下面我们将详细探讨其中的知识点...

    C语言中常用的标准库函数.pdf

    C语言中常用的标准库函数涵盖了从基础类型定义到文件操作、字符串处理、数学计算等多个方面,对于编程人员来说,掌握这些函数的使用是进行C语言编程的基础。接下来,我将对C标准库中的常用函数进行详细说明。 首先...

Global site tag (gtag.js) - Google Analytics