📜  C-输入和输出

📅  最后修改于: 2020-12-19 05:30:54             🧑  作者: Mango


当我们说Input时,它意味着将一些数据馈入程序。输入可以文件形式或从命令行给出。 C编程提供了一组内置函数来读取给定的输入并将其按要求提供给程序。

当我们说Output时,它意味着在屏幕,打印机或任何文件中显示一些数据。 C编程提供了一组内置函数,可在计算机屏幕上输出数据并将其保存为文本或二进制文件。

标准文件

C编程将所有设备视为文件。因此,诸如显示器之类的设备以与文件相同的方式寻址,并且在执行程序以提供对键盘和屏幕的访问时会自动打开以下三个文件。

Standard File File Pointer Device
Standard input stdin Keyboard
Standard output stdout Screen
Standard error stderr Your screen

文件指针是访问文件以进行读写的方式。本节说明如何从屏幕读取值以及如何在屏幕上打印结果。

getchar()和putchar()函数

int getchar(void)函数从屏幕上读取下一个可用字符,并将其作为整数返回。此函数仅读取单个字符。如果要从屏幕读取多个字符,可以在循环中使用此方法。

int putchar(int c)函数将传递的字符放在屏幕上,并返回相同的字符。此函数只放置一个字符。如果要在屏幕上显示多个字符,可以在循环中使用此方法。检查以下示例-

#include 
int main( ) {

   int c;

   printf( "Enter a value :");
   c = getchar( );

   printf( "\nYou entered: ");
   putchar( c );

   return 0;
}

上面的代码编译并执行后,将等待您输入一些文本。当您输入文本并按Enter键时,程序将继续并仅读取单个字符并将其显示如下-

$./a.out
Enter a value : this is test
You entered: t

gets()和puts()函数

char * gets(char * s)函数从stdin读取一行到s所指向的缓冲区,直到终止换行符或EOF(文件末尾)为止。

int puts(const char * s)函数将字符串’s’和’a’尾随换行符写入stdout

注意:尽管不建议使用gets()函数,但要使用fgets()而不是使用gets。

#include 
int main( ) {

   char str[100];

   printf( "Enter a value :");
   gets( str );

   printf( "\nYou entered: ");
   puts( str );

   return 0;
}

上面的代码编译并执行后,将等待您输入一些文本。当您输入文本并按Enter时,程序将继续并读取整行直到结束,并显示如下:

$./a.out
Enter a value : this is test
You entered: this is test

scanf()和printf()函数

int scanf(const char * format,…)函数从标准输入流stdin读取输入,并根据提供的格式扫描该输入。

int printf(const char * format,…)函数将输出写入标准输出流stdout并根据提供的格式生成输出。

格式可以是简单的常量字符串,但是您可以指定%s,%d,%c,%f等来分别打印或读取字符串,整数,字符或浮点数。还有许多其他格式化选项可以根据需要使用。现在让我们继续通过一个简单的例子来更好地理解概念-

#include 
int main( ) {

   char str[100];
   int i;

   printf( "Enter a value :");
   scanf("%s %d", str, &i);

   printf( "\nYou entered: %s %d ", str, i);

   return 0;
}

编译并执行上述代码后,它等待您输入一些文本。当您输入文本并按Enter时,程序将继续并读取输入并将其显示如下-

$./a.out
Enter a value : seven 7
You entered: seven 7

在这里,应该注意,scanf()期望输入的格式与您提供的%s和%d相同,这意味着您必须提供有效的输入,例如“字符串整数”。如果提供“字符串 字符串”或“ integer integer”,则将其视为错误输入。其次,在读取字符串,scanf()遇到空格时将立即停止读取,因此“ this is test”是scanf()的三个字符串。