当前位置: 首页 > 文档资料 > 学习 C 语言 >

输入和输出(Input & Output)

优质
小牛编辑
132浏览
2023-12-01

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

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

标准文件

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

标准文件文件指针设备
标准输入stdinKeyboard
标准输出stdoutScreen
Standard errorstderrYour screen

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

getchar()和putchar()函数

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

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

#include <stdio.h>
int main( ) {
   int c;
   printf( "Enter a value :");
   c = getchar( );
   printf( "\nYou entered: ");
   putchar( c );
   return 0;
}

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

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

gets()和puts()函数

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

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

NOTE:虽然不推荐使用gets()函数,但是您想使用fgets()而不是使用gets。

#include <stdio.h>
int main( ) {
   char str[100];
   printf( "Enter a value :");
   gets( str );
   printf( "\nYou entered: ");
   puts( str );
   return 0;
}

编译并执行上述代码时,它会等待您输入一些文本。 当您输入文本并按Enter键时,程序继续执行并读取完整的行直到结束,并显示如下 -

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

scanf()和printf()函数

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

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

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

#include <stdio.h>
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
<b>Enter a value :</b> seven 7
<b>You entered:</b> seven 7

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