C语言数据输入输出函数

article/2025/10/30 20:35:19

文章目录

  • 前言
    • 一、字符输入输出函数
      • 1.字符输出函数
      • 2.字符输入函数
  • 二、格式输出函数printf()
    • 1.格式输出函数的一般形式
    • 2.格式控制
  • 三、格式输入函数scanf()
    • 1.格式输入函数的一般形式;
    • 2.格式控制
  • 四、字符串输入输出函数
    • 1.字符串输出函数puts()
    • 2.字符串输入函数gets()
    • 3.字符串输入函数fgets()


前言

C语言本身不提供输入/输出语句,输入输出功能由C语言的标准输入输出(I/O)库函数提供。这样处理,一方面可以使得C语言的内核比较精炼,另一方面也为C语言程序具有可移植性打下了基础。C语言的输入输出语句就是库函数调用语句。

C语言有很丰富的输入输出库函数,有用于键盘输入和显示器输出的输入输出库函数、磁盘文件读写的输入输出库函数、硬件端口操作的输入输出库函数等。本节主要介绍用于键盘输入和显示器输出的输入输出库函数中的字符输入输出库函数和格式化输入输出库函数,其对应的头文件为“studio.h”。

一、字符输入输出函数

1.字符输出函数

函数原型:int putchar(int);

函数功能:向标准输出设备(一般为显示器)输出一个字符,并返回输出字符的ASCII码值。函数的参数可以是字符常量、字符型变量或整型变量,即将一个整型数作为ASCII编码,输出相应的字符。

#include<stdio.h>
void main(){int i=97;/*97是字符’a'的ASCH码*/char ch='a':putchar(i);/*输出字符'a'*/putchar('\n');/*换行,可以输出控制字符,起控制作用*/putchar(ch);/*输出字符变量ch的值'a'*/
}

程序运行结果为:

a
a

2.字符输入函数

函数原型:int getchar(void)

函数功能:从输入设备(一般为键盘)上输入一个字符,函数的返回值是该字符的ASCII编码值。
字符输入函数每调用一次,就从标准输入设备上取一个字符。函数值可以赋给一个字符变量,也可以赋给一个整型变量。

#include<stdio.h>
#include<windows.h>
void main(){int ch;ch=getchar();/*从键盘输入字符,该字符的ASCII编码值赋给ch*/putchar('=');/*输出字符'='*/putchar(ch);/*输出ch对应的字符*/putchar('\n');/*输出换行符*/system("pause");

运行该程序时,输入如下:

a

则变量ch的值为97。程序执行后输出的结果为:

=a

注意:

  1. 执行getchar()输入字符时,键入字符后需要敲回车键,回车后,程序才会响应输入,继续执行后续语句。
  2. putchar(\n’)输出换行符。
    字符输入和字符输出函数使用非常方便。但每一条语句只能输入或输出一个字符。

二、格式输出函数printf()

1.格式输出函数的一般形式

函数原型:int printf(char*format[,argument,…]);

函数功能:按规定格式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数;若出错,则返回负数。
它使用的一般形式为:

printf("格式控制字符串”,输出项列表);

2.格式控制

格式说明部分由“%”和“格式字符串”组成。它表示按规定的格式输出数据。

格式说明的形式为:%[flags][width][. prec][F]N]h|L]type
各部分说明如下。

[]表示该项为可选项,即可有可无。例如:printf(“%d”,100);

flags为可选择的标志字符,常用标志字符有:

— 左对齐输出;默认为右对齐输出。
+ 正数输出加号(+),负数输出减号(一)。
空格 正数输出空格代替加号(+),负数输出减号(一)。

width 为可选择的宽度指示符。十进制正整数表示,用来设置输出值的最少字符个数。不足则补空格;多出则按实际输出。默认则按实际输出。例如:

printf("%8d\n", 100);
printf("%6d\n", 100);
printf("%-8d n", 100);
printf("%+8d\n", 100);

输出结果:

□□□□□100
□□□100
100□□□□□
□□□□+100

[.prec]为可选的精度指示符,“小数点”加“十进制正整数”表示,对“整数”、“实数*“字符串”的输出有如下功能:对“整数”,表示至少要输出的数字个数,不足补数字0,多则原样输出;对“实数”,表示小数点后至多输出的数字个数,不足则补数字0,多则作舍入处理;对“零符串”,表示最多输出的字符个数,不足补空格,多则丢弃。

printf("%8.2f\n",3.14159); 
printf(%8.5f\n”,3.14159);

输出结果:

□□□□3. 143. 14159

type为格式字符,用来进行格式转换 在这里插入图片描述

三、格式输入函数scanf()

1.格式输入函数的一般形式;

函数原型:int scanf(char*format[,argument,…]);

函数功能:按规定格式从键盘输入若干任何类型的数据给argument所指的单元。这回读入并赋给argument的数据个数;遇文件结束返回EOF;出错返回0。
它使用的一般形式为:

scanf(“格式控制字符串”,地址列表);

2.格式控制

格式控制由格式控制字符串实现。格式控制字符串由格式字符和普通字符两部分组成。

格式字符格式字符串形式为:%[*][width][F]N][h|I]type
与printf函数的格式符有相同之处,也有不同之处:

  1. “*”为输入赋值抑制字符,表示该格式说明要求输入数据,但不赋值,也即在地址列表中没有对应的地址项。例如:
scanf(%3d%*5d%f",&a,&x);

如果语句执行时输入:

2001200 4.1

则200传给a,4.1传给x,1200不赋给任何变量。

  1. width为宽度指示符,表示该输入项最多可输入的字符个数。如遇空格或不可转换的字符,读入的字符将减少。例如:
scanf(%3d%5d%f",&.a,&.b,&.x);

如语句执行时输入:

2001200 4.1

则200传给a,1200传给b,4.1传给x;
%3d控制第一个数据只取3个字符,所以将前面3个字符转换成整型数200;
%5d控制第二个数据,但从输入流中截取了4个字符后,遇到空格,因此第二个数据只得到了4位数。

scanf()函数指定输入数据所占的宽度时,将自动按指定宽度来截取数据。例如:

scanf("%2d%3d",&a,&b);

若输入数据为:1223100

则scanf()函数截取两位数的整数12存入地址&a,截取231存入地址&b中。

用scanf()函数输入实数,格式说明符为%f,但不允许规定精度)例如:
%10.4f
是错误的。

四、字符串输入输出函数

关于字符串的输入输出,除了用scanf函数和printf函数外,C库中还提供了专门的字符串处理函数。

1.字符串输出函数puts()

函数原型:int puts(const char*s)

功能:在标准输出上显示字符串s
参数:s为需要输出的字符串
返回值:成功返回一个非0的数字;失败返回-1或EOF
示例程序如下:

#include<studio.h>
int main()
{char s[]="welcome";puts(s);return 0
}

程序执行结果如下:

welcome

可以看出,puts函数在输出字符串时,会自动追加换行符’\n’。使用时,注意字符数组必须以’\0’结束。

2.字符串输入函数gets()

函数原型:char gets(char*s)

功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加’\0’°
参数:s为字符数组,存储输入的字符串
返回值:成功返回字符数组的起始地址,失败或输入结束返回NULL示例程序如下:

#include<stdio.h>
#define N 20
int main()
{int i=0;char s[N]={O};printf(">");while(gets(s)!=NULL){printf(">");//scanf("%s",s);printf("i=%d:%s\n",i,s);i++;}printf(”end main\n");return 0;
}

程序执行结果如下:

>how are you
>i=0:how are you
aa bb cc
>i=1:aabb cc
end main

编译这个程序时,出现了下面的警告:

warning:the'gets'function is dangerous and should not be used.

gets函数的参数中,不含长度控制。当输入字符时,最多只能输入N-1(留一个位置存字符串的结束符\0)。假如输入字符超过了N-1,则多余的符号也会被存到字符数组中,这样就会造成内存的访问越界,结果是不可预料的。所以,使用此函数时,会有警告。我们在使用该函数时,一定要注意数组的长度。
还可以看出,gets函数并不以空格作为字符串输入结束的标志,而只以回车作为输入结束。这是与scanf函数不同的。
为了解决越界问题引入fgets()函数;

3.字符串输入函数fgets()

函数原型:char *fgets(char *restrict str, int size, FILE *restrict stream)

可以理解为(“容器的地址”, “容器的大小”, “从哪里读取”)

一般用法:

char a[100] = {0};
fgets(a, 100, stdin);

http://chatgpt.dhexx.cn/article/jjJEBuNe.shtml

相关文章

C语言的输入与输出

目录: 格式声明 基本的格式字符 附加的格式说明字符&#xff08;输出&#xff09;和&#xff08;输入&#xff09; 一、格式声明&#xff1a; 格式声明的一般形式为百分号&#xff08;&#xff05;&#xff09;的格式字符。 二、基本的格式字符。 1、%d: 表示以带符号的十进…

C语言程序——字符的输入和输出

文章目录 前言一、字符的输入和输出二、程序实例1.程序代码2.运行结果3.结果分析 三、拓展应用总结 前言 使用stdio库中提供的字符输入输出函数的时候&#xff0c;需要在程序中包含stdio.h的预处理命令&#xff0c;这样编译系统才能够调用库中的函数进行输入和输出。 一、字符…

C语言的基本的输入输出

C语言的基本的输入输出 printf()函数 在头文件stdio.h中scanf()函数 在头文件stdio.h中 printf()函数 在头文件stdio.h中 printf()函数是格式化输出函数&#xff0c;一般用于向标准输出设备按照规定格式输出信息。 printf()函数的格式为: printf("<格式化字符串>&q…

C语言 基本输入输出函数

1 几组常见的输入输出函数 在stdio.h头文件中内置了几种输入输出函数&#xff0c;如下列出&#xff1a; printf 与 scanfgetchar 与 putchargets 与 puts 相比之下 printf 与 scanf的功能最为强大&#xff0c;但操作稍显复杂&#xff0c;后两种则功能简单&#xff0c;但针对…

C语言的输出和输入

一、输出 printf 函数被成为格式输出函数&#xff0c;是按照用户指定的格式&#xff0c;把指定的数据显示到显示屏上。 printf 函数调用形式为&#xff1a;printf ("格式控制字符串"&#xff0c;输出表列)&#xff1b; 格式控制字符串可分为格式字符串和非格式字符串…

C语言数据输入与输出

1.输入与输出举例 例一&#xff1a;求abxc0方程的根。a,b,c由键盘输入&#xff0c;设-4ac>0 编写程序&#xff1a; 结果输出&#xff1a; 注&#xff1a;1.输入输出是以计算机主机为主体而言的. 2.C语言本身不提供输入输出语句。 3.要在程序文件的开头用预处理指令#includ…

C语言的输入、输出

C语言的输入与输出 一、scanf() 和 printf() 函数实例运行结果 二、getchar() 和 putchar() 函数实例1运行结果实例2运行结果 三、gets() 和 puts() 函数实例运行结果 一、scanf() 和 printf() 函数 实例 #include <stdio.h>int main() {char a[100];printf("Plea…

C语言中的输入和输出

一、数据的输入 在C语言中&#xff0c;有三个函数可以从键盘获得用户输入 getchar&#xff1a;输入单个字符&#xff0c;保存到字符变量中 gets&#xff1a;输入一行数据&#xff0c;保存到字符串变量中 scanf&#xff1a;格式化输入函数&#xff0c;一次可以输入多个数据&…

C语言详解-输入输出

1. 输入输出一览 以下输入输出库函数的操作主要在标准输入输出设备&#xff08;键盘和屏幕&#xff09;与数据缓冲区之间进行。 1.1 printf()与scanf () printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。 注意宽度输出和精度输出控制 scanf(): 从标准输入设备(键盘…

None、Null与空字符‘‘什么区别

1. None 表示空无一物&#xff0c;啥也没有存储。 编程语言里采用None 比如在python中None不是一个保留关键字&#xff0c;只是NoneType对象的一个实例。 空就是空&#xff0c;它不是整型&#xff0c;不是浮点型&#xff0c;也不是字符串&#xff0c;就是一个NoneType。所以在…

关于“空”string字符串

string a ""; string b ""; string c string.Empty; string d string.Empty; string e null; string f null;等运行完后在即时窗口中用&命令查看这些变量的地址 然后发现&#xff0c;所有变量的栈地址都不同&#xff08;废话&#xff09;&#x…

空字符串、NULL、空格串的区别

1、表示区别 string str1 ""; //空字符串 str1.length() 等于 0 string str2 null; //NULL string str3 " "; //空格串 str2.length() 等于 1 2、内存区别 "" &#xff1a;分配了内存 &#xff0c;分配了一个空间 null…

如何输入带空格的字符串

转载自&#xff1a;https://www.cnblogs.com/houchen/p/10356396.html 问题一&#xff1a;带空格的字符串输入(c) 对于string类 getline(cin, str) 对于字符数组 方法一&#xff1a;getline() 读入整行数据&#xff0c;使用回车键输入的换行符来确定输入结尾。 调用方法&am…

C++ 空字符

C 空字符 本来想定义一个空的字符&#xff0c;想当然的就写成了下面的样子&#xff1a; #include <iostream>using namespace std; int main() {char ch ;cout<<ch<<endl;return 0; } 运行直接报错 加上\0 就对了 &#xff0c; 哎 基础呀。。。。。 #i…

【Java】Java中空字符的写法

首先要明确空字符和空格字符的区别 空字符表示数据为空&#xff1b; 空格字符表示数据不为空&#xff0c;为一个空格字符。 Java和C中使用\0表示空字符&#xff0c;Python使用表示空字符。 public class Test {public static void main(String[] args) {char s[] new char[…

MySQL中的空值 Null 和空字符‘‘

目录 1. 空值 Null 和空字符 2. 空值 Null 和空字符 在查询方式上的对比2.1. 创建 SQL 脚本2.2. 查询 username 列为空字符串 的所有数据2.3. 查询 username 列为空值 null 的所有数据2.3.1. 错误 SQL2.3.2. 正确 SQL 2.4. 查询 username 列不为空值 null 的所有数据2.4.1. 错…

空字符'\0'与字符串

from&#xff1a; https://blog.csdn.net/bairenxinmo/article/details/17662983 空字符\0 空字符即NUL字节&#xff0c;是一个ASCII值为0的控制字符&#xff0c;在程序代码中通常以转义序列\0表示&#xff0c;在C语言中&#xff0c;空字符非常重要&#xff0c;主要体现在字符…

空字符和空格字符有什么区别?

char ch1 \0 ,ch2 ;System.out.println(""(int)ch1);System.out.println(""(int)ch2); 运行结果 由此可见&#xff0c;空字符(\0)的ascii值是0&#xff0c;实际应用上是字符串结尾自动补上的一个字符 有的时候用来判断是否到了字符串结尾 而空格字符…

认真理清 一一空字符('\0')、空指针(NULL)、\0、0

在C/C语言中我们经常看到’\0’、NULL。从概念上看两者完全不同&#xff0c;但是本质上他们都可以用数值0来表示。空指针是指针类型&#xff0c;而空字符是整形类型&#xff0c;两者有时很容易混淆。 NULL 空指针有一个值&#xff0c;该值不会与任何数据的有效值地址对应。通…