C/C++ 输入输出

使用printf()函数和scanf()函数,要声明头文件#include <stdio.h>

1. printf()函数

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

功能:通过标准输出设备(如显示器)输出一组数据,输出形式由“格式控制”字符串规定。

例如: printf("%4d,%4d",a,b);

 

2. scanf()函数

形式: scanf("格式控制字符串",地址表列);  //其中地址表列由若干个变量地址组成的,地址是由"&"运算得到的

功能: 从终端输入任何类型的多个数据

注意事项:在终端输入数据时,采用的分隔符应与格式控制中的分隔符一致。

在下列情况下可认为数据输入结束:

1)遇到空格、回车、tab时

2)遇宽度结束

3)非法输入

3. puts() : 输出字符串,只需要给出字符串的地址即可(字符串常量、char数组名、char指针等等),且puts()在输出时,会自动在行尾加上一个换行符(即不需要自己换行)

4. gets() :

gets()可以接收输入字符串中的空格、tab键和回车

语法:gets(字符数组名或指针);

*gets与scanf()的区别:

gets()可以接受回车键之前输入的所有字符,并用'\n'替代'\0',回车键不会留在缓冲区中,且gets()只能读取字符串;

scanf()当遇到回车、空格和tab键时会自动在字符串后面添加'\0',但是回车、空格和tab键仍会留在输入的缓冲区中,scanf()可以读取任意类型的数据;

可以用一段代码测试一下:

#include <stdio.h>
int main()
{
      char ch1[10], ch2[10], c1, c2;
      scanf("%s",ch1);
      c1=getchar();
      gets(ch2);
      c2=getchar() ;
      
      return 0;
}

依次键入asdfg回车,asdfg回车,则ch1="asdfg\0", c1='\n',ch2="asdfg\0", c2需要输入。

5. getchar()

当程序调用getchar时,程序在等待用户输入。用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车也会放到缓冲区中)。因此,getchar()也会读取回车字符。如果用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓冲区中,等待后续getchar()调用读取,即后续的getchar()调用不会等待用户按键,而是直接读取缓冲区中的字符,直到缓冲区中的字符读完。

6. getline() 函数

C++中为了使用的方便,C++在标准库中添加了getline()函数,C++对不同的输入流对象都定义了一个getline函数。

对于标准输入来说,头文件<iostream>中声明了getline函数。

istream::getline

istream& getline(char* s, streamsize n);

istream& getline(char* s, streamsize n, char delim); //delim参数是指定分隔符,如果不指定默认使用'\n'。

#include <iostream>
using namespace std;

int main()
{
    char line[100];
    while(cin.getline(line,100))
        cout<<line<<endl;
    return 0;
}

C++中还定义了一个std命名空间的全局函数,因为这个getline函数的参数使用了string字符串,所以声明在了<string>头文件中了。

声明如下:

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

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

*C++中的getline()函数读取空白符,但不读取换行符。

*gcc中也定义了getline()函数,但是在这里不再进行赘述。

7. C++ 一次性读入一行数字,并且保存在数组中

#include <iostream>
#include <sstream>
#include <vector>
#include <string>

using namespace std;

int main()
{
      string line;
      getline(cin,line);
      stringstream ss;
      ss<<line;
      int n;
      vector<int> num;
      while(ss>>n)
            num.push_back(n);
      return 0;
}

 

posted on 2016-03-03 16:59  summerkiki  阅读(478)  评论(0编辑  收藏  举报