欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

字符与字符串的输入输出

程序员文章站 2022-03-08 14:00:21
...

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指针,第二个参数为数组字符串长度。

相关标签: 字符、字符串