字符与字符串的输入输出

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’)时,输出停止,所以确保有空字符存在否则直到发现一个空字符为止 
    put函数的应用
#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指针,第二个参数为数组字符串长度。

  • 33
    点赞
  • 148
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值