字符与字符串的输入输出
字符、字符串的输入输出
scanf
不接受空格,回车结束输入
- scanf("%c",&a);
读取标准输入流中的第一个字符,包括空格、换行符等,按回车键结束输入 - scanf("% c",&a);
屏蔽空白字符,读取标准输入流中的第一个非空白字符,按回车键结束输入 - scanf("%s",a);
读取一个字符串
(1)遇到空白字符输入结束;
(2)达到指定宽度【如:scanf("%10s",a);】,读取10个字符后输入结束。
printf
- printf("%c",ch);
输出一个字符,包括空格 - printf("%s",str);
- 输出字符串,遇’\0’结束
getchar
接受空格,回车结束输入,换行符会保存在缓冲区
- 格式:char a=getchar();
从键盘上读入一个字符,并带回显。(读取空白字符、换行符)
getchar()函数等待输入直到按回车才结束,回车前的所有输入字符都会逐个显示在屏幕上,但只有第一个字符作为函数的返回值。
函数原型:int getchar(void);
功能:从标准输入里读取下一个字符,相当于getc(stdin)。
返回值:返回类型为int型,为用户输入的ASCII码,出错返回-1。
scanf与getchar的区别
-
读取方式不同
scanf函数在读取字符时会跳过空格、制表符和换行符。
getchar函数只能输入字符型,输入时遇到回车键才从缓冲区依次提取字符。 -
结束输入的方式不同
scanf函数以空格、Enter、Tab结束一次输入,不接受空格符。
getchar函数以Enter结束输入(空格不结束),接受空格符。 -
舍弃回车符的方法不同
scanf函数以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中)。
getchar函数以Enter结束输入时,接受空格,会舍弃最后的回车符。
putchar
接受空白字符、换行符
- 格式:putchar(c);
作用:输出一个字符,包括空格、换行符
c可以是一个char型变量,可以是一个int型数(0<=c<=127),也可以是一个被单引号引起来的字符【如:putchar(‘A’)】
函数原型: int putchar(int ch);
getchar与putchar的使用
#include<stdio.h>
int main()
{
/*----输入2(回车)----*/
char a; //接受‘2’
a=getchar();
putchar(a);
char b;
b=getchar(); //接受‘回车符’
putchar(b);
return 0;
/*----输出2(回车)----*/
}
gets
接受空格,回车键结束输入
- gets(字符指针);
可以无限读取,直至接受到换行符或EOF时停止。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。
函数原型:char *gets(char *string);
PS:(1)因为gets不限制输入字符个数,因此容易造成程序崩溃,可使用fgets代替;(2)在GCC中使用gets(),编译无法通过;
fgets
- fgets函数的调用形式:fgets(str,n,fp);
fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。 - 函数的功能:从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。
- 调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加’\0’,并以str作为函数值返回。
- 函数原型:char *fgets(char *buf, int bufsize, FILE *stream);
*buf: 字符型指针,指向将存储到的数据地址。
bufsize: 整型数据,指明buf指向的字符数组的大小。
*stream: 文件结构体指针,将要读取的文件流。
fgets读取指定大小的数据,避免gets函数从stdin接收字符串而不检查它所复制的缓存的容积导致的缓存溢出问题
puts
输出空格与换行符,遇到’\0’停止输出
- 调用方式:puts(s) ;
puts()显示字符串是自动在其后添加一个换行符,puts()遇到空字符(’\0’)时,输出停止,所以确保有空字符存在否则直到发现一个空字符为止
#include <stdio.h>
#include <conio.h>//getch()的头文件
int main(void)
{
int i;
char str[20];
for(i=0; i<10; i++)
{
str[i]='a';
}
str[10]='\0';
//若去掉上面一行代码,则会输出乱码
//puts输出字符串时要遇到'\0’也就是字符结束符才停止
puts(str);
getch();
return 0;
}
cin与cout
- string a;
cin>>a;
cout<<a;
cin:输入字符串数组时,遇到空白字符结束输入(不能读入空格)。
cout:在输出字符串数组时,与puts()和printf+%s相同,遇到‘\0’停止输出。
getline
- getline(cin,str);
默认’\n’为输入结束终止符;可读取空格 - getline(cin,str,delim);
delim:一个char型数据,表示字符串输出结束终止符,即输入字符串遇到该字符时结束读取
cin.getline
- cin.getline(ch2,6);
默认结束符为’\n’,接受空格
在不遇到结束符的情况下,最多可接收6-1=5个字符到ch2中 - cin.getline(字符指针(char*),字符个数N(int),结束符(char));
cin.getline()函数用于处理数组字符串
函数原型:cin.getline(char * , int);第一个参数为一个char指针,第二个参数为数组字符串长度。
推荐阅读
-
MySQL截取字符串函数的方法_MySQL
-
php中将数组转成字符串并保存到数据库中的函数代码_php技巧
-
请问一个字符串截取的有关问题
-
企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2019/
-
自定义的PHP字符串截取函数
-
如何判断两组字符串是否有相同的字符?
-
输入一个十六进制的字符串转换为十进制的整数
-
PHP判断两个字符串的相似性函数
-
php 部分字符隐藏变* 的字符串替换有关问题
-
php替换字符串中间字符为省略号的方法,字符串省略号_PHP教程