c/c++ 常见输入输出函数

参考文章:C++标准输入cin详解-CSDN博客https://blog.csdn.net/bravedence/article/details/77282039

c++里面的函数

 区分cin,cin.get,cin.getline,getline() 

cin:从标准输入中读取数据

cin会跳过空白字符,以空格,换行符,tab键作为分割符。

会将分割符保留在缓冲区中。若缓冲区的第一个字符是空白字符则会跳过并清除,

 cin.get

int cin.get();  //返回读入字符的ascii

istream& cin.get(char& var); //注意返回值是istream,可以链式读取

istream& get ( char* s, streamsize n ); //遇到换行符时结束读取,不对换行符进行处理,换行符仍然残留在输入缓冲区

istream& get ( char* s, streamsize n, char delim )。  //允许自定义终止符,遇到终止符停止读取,终止符保留在缓冲区中

读取的字符数最多为n-1,假设读取len个字符,会在len+1位置赋值为'0'

注意:这里的二个参数 需要传递数组的长度 

如果不太理解可以看这个代码 实际上只会读取一个字符,下标为1的位置自动设置为‘0’

#include<iostream>
using namespace std;
int  main(){
    char id[14];
    cin.getline(id, 2);
    return 0;
}

cin.getline

和cin.get类似 区别是将终止符自动清理,不会将终止符留在缓冲区中

------------

前面的都是c风格的读取,getline是c++风格的字符串读取

getline

需要包含string头文件

遇到终止符停止读取,会将终止符清理掉

istream& getline ( istream& is, string& str);//默认以换行符结束

istream& getline ( istream& is, string& str, char delim);

需要指定输入流(可以是文件流),输出流

这里提一下:cout直接打印数组名,会输出首地址。而直接打印字符数组名,会输出整个字符。(前提是必须要字符0结束标志)

原因:

数组名在大多数表达式中会自动退化为指针。cout 会把它当作「地址指针」打印出来

但对于字符指针:

C++ 的 operator<<cout重载机制

 对 char* 类型,cout 调用的重载函数是:

ostream& operator<<(ostream& os, const char* s);

它会把指针当作一个 C 字符串,从该地址开始打印,直到遇到 '\0'

C语言中的函数

C语言不可以直接指定分割符

 getchar

int getchar(void) //读取单个字符,能够读取任意字符

没有参数,返回值是ascii码

fgetc/fputc

   int fgetc(FILE *stream);  

    功能:从指定文件中读取一个字符数据,并以无符号整数的形式返回    

   参数1:文件指针  

    返回值:成功返回读取的字符对应的无符号整数,失败返回EOF并置位错误码              

    int fputc(int c, FILE *stream);  

    功能:将指定的字符c写入到stream指向的文件中

      参数1:要写入的字符对应的无符号整数       参数2:文件指针      

返回值:成功返回写入字符的无符号整数,失败返回EOF并置位错误码

fgets/fputs

int fputs(const char *s, FILE *stream);
      功能:将指定的字符串,写入到指定的文件中

      参数1:要被写入的字符串

      参数2:文件指针

      返回值:成功返回本次写入字符的个数,失败返回EOF

char *fgets(char *s, int size, FILE *stream);    

  功能:从stream指向的文件中最多读取size-1个字符到s容器中,遇到回车或文件结束,会结束一 次读取,并且会将回车放入容器,最后自动加上一个字符串结束标识'\0'

      参数1:字符数组容器起始地址  

    参数2:要读取的字符个数,最多读取size-1个字符

      参数3:文件指针  

    返回值:成功返回容器s的起始地址,失败返回NULL

ps:c语言中没有get函数,也没有fget函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值