standard C I/O
头文件:#include <stdio.h> . getchar() 原型:int getchar(void);
功能:从标准输入获取并返回下一个字符,并释放该字符空间。
返回值:读取的字符的ASCII,出错或到达文件结尾时返回EOF(-)。 键盘 缓冲区 getchar读取字符
入水口 蓄水池 出水口 a. 我们从键盘输入的字符串首先是放在缓冲区内的,再利用getchar()函数从缓冲区内读取字符。
b. 当用户键入回车符之后,getchar()才开始从缓冲区中读取字符(一次调用读取一个字符)。
c. 键入Enter建实际上产生了2个字符(回车符'\r'和换行符'\n')。回车符'\r'使光标回到行首,换行符'\n'换行。 // 读取含有space(空格),table(制表符)的字符串 #include <stdio.h> int main()
{
int t;
while ('\n' != (c = getchar())) printf("%c", t);
return ;
} /*
* input: 123table456space789
* output: 123 456 789
*/ // 当使用scanf()和gets()连用时,要使用getchar()清除scanf()输入完成最后键入的Enter键 #include <stdio.h> int main()
{
int nCase;
scanf("%d", &nCase);
getchar(); // 清空缓冲区
while (nCase--)
{
char str[];
gets(str);
printf("%s\n", str);
}
return ;
}
/*
* input:
* 2
* 123 456
* abc def
* output:
* 123 456
* abc def
*/ . gets() 原型:char* gets(char* str);
功能:从标准输入读取字符并把他们加载到str里,直到遇到换行或者到达EOF
返回值:返回读入的字符串,发生错误时返回NULL gets()和scanf()都可以输入字符串,两者的异同:
a. 不同点:
scanf()不能接受空格、制表符、回车
gets()可以接受空格、制表符,遇到回车结束输入
b. 相同点:
字符串接受结束后自动加'\0' . scanf() 原型:int scanf(const char* format,...);
功能:由format指定的格式从标准输入读取,并保存数据到其参数
返回值:成功赋值的变量的个数,发生错误时返回EOF a. scanf()读取匹配format字符串,当读取到控制字符,它就把值放置到对应变量
b. 空白会跳过,非空白字符和输入匹配,然后丢弃
c. %符号和控制符间的数,控制指定数量的字符转换到变量中
d. scanf()遇到一个字符集(用%[]表示的),那么在括号中的任意字符都会读取到变量中 scanf("%d %d", &a, &b);
如果a和b被成功读入,返回2
如果只有a被成功读入,返回1
如果a和b都未被成功读入,返回0
如果遇到错误或遇到end of file,返回值EOF(-)
只有当第一个参数为NULL时,才可能返回EOF 可以采用%[^\n]格式控制来输入含有空格,制表符的字符串 #include <stdio.h> int main()
{
char str[];
scanf("%[^\n]", str);
printf("%s\n", str);
return ;
}
/*
* input: 123 456
* output: 123 456
*/ C++输入含有空格制表符的字符串 对于字符数组 . getline() 有两种重载,只介绍一种
原型:istream& getline(char* buffer, streamsize num);
功能:读取字符到buffer中,直到发生以下情况:
a. num - 1个字符已经读入
b. 碰到换行符
c. 碰到EOF
d. 碰到字符delim(delim字符不会被放入buffer中)
返回值:如果getline()没有读入字符,将返回false,可用于判断文件是否结束。 调用方法:cin.getline(str, len);
args1: 用来存储输入数据 args2: 要读取的字符数 #include <iostream>
using namespace std; int main()
{
char str[];
cin.getline(str, );
cout << str << endl;
return ;
}
/*
* input: 123 456
* output: 123 456
*/ . get() 有多种重载,只介绍一种
原型:istream& get(char* buffer, streamsize num);
功能:读取字符到buffer直到num - 1个字符被读入, 或者碰到EOF或换行标志
返回值:发生错误时返回false,可用于判断是否正常输入 调用方法:cin.get(str, len); #include <iostream>
using namespace std; int main()
{
char str[];
cin.get(str, );
cout << str << endl;
return ;
}
/*
* input: abc def
* output: abc def
*/ getline()和get()的区别 两者都读取一行输入,直至换行符。
然后,getline将丢弃换行符,而get()将换行符保留在输入序列里。
所以,再使用cin.get()输入多行数据时,中间可以使用get()消除换行符。 #include <iostream>
using namespace std; int main()
{
char str1[], str2[];
cin.get(str1, );
cin.get();
cin.get(str2, );
cout << "str1: " << str1 << endl;
cout << "str2: " << str2 << endl;
return ;
}
/*
* input: abc def
* 123 456
* output: str1: abc def
* str2: 123 456
*/ 对string类 调用方法:getline(cin, str); #include <iostream>
#include <string>
using namespace std; int main()
{
string str;
getline(cin, str);
cout << str << endl;
return ;
}
/*
* input: 123 456 789
* output: 123 456 789
*/

C/C++中字符串的输入问题的更多相关文章

  1. C++中的字符串的输入输出函数、空字符与空格的区别、字符变量赋值和字符串初始化

      一.字符串输入输出函数 1.  cin.get()   逐个字符输入输出 2.  cin 可以将整个字符串一次性输入,但是,cin将空格.Tab和回车键,因此不能用于数组的一次性输入. 注意:ci ...

  2. 字符串数组 输入3个字符串,要求按由小到大的字母顺序输出; 输入n个学生的姓名和学号到字符串数组中,在输入一个姓名,如果班级有该生则返回其信息,否则返回本班无此人

    输入3个字符串,要求按由小到大的字母顺序输出 如 输入franch england china,输出结果是china england franch 三个数排序输出,比较三个数的大小怎么做? a=18 ...

  3. 设在起始地址为STRING的存储空间存放了一个字符串(该串已存放在内存中,无需输入,且串长不超过99),统计字符串中字符“A”的个数,并将结果显示在屏幕上。

    问题 设在起始地址为STRING的存储空间存放了一个字符串(该串已存放在内存中,无需输入,且串长不超过99),统计字符串中字符"A"的个数,并将结果显示在屏幕上. 代码 data ...

  4. C++ 中字符串标准输入的学习及实验

    声明:下面实验中[]里面表示要输入里面的符号,[]符号本身并未输入 1.cin>> cin使用空白(空格.制表符.回车)来确定字符串的结束位置. cin会将换行符留在输入输出队列中. #i ...

  5. Java中从键盘输入的三种方法

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  6. Java编程中获取键盘输入实现方法及注意事项

    Java编程中获取键盘输入实现方法及注意事项 1. 键盘输入一个数组 package com.wen201807.sort; import java.util.Scanner; public clas ...

  7. Go语言中字符串的查找方法小结

    这篇文章主要介绍了Go语言中字符串的查找方法小结,示例的main函数都是导入strings包然后使用其中的方法,需要的朋友可以参考下   1.func Contains(s, substr strin ...

  8. <CPP学习 第二天> 字符串的输入 及 String类

    今天简单的学习了字符串的输入以及C++的String类. 1.面向行的输入: getline(); getline()函数读取整行,通过回车键输入的换行符来确定输入结尾.要调用这种方法,可以使用cin ...

  9. python中字符串编码方式小结

    Python2中字符串的类型有两种:str和unicode,其中unicode是统一编码方式,它使得字符跟二进制是一一对应的,因此所有其他编码的encode都从unicode开始,而其他编码方式按照相 ...

随机推荐

  1. CSV 客座文章系列: Pruffi 通过 Windows Azure 挖掘社交媒体的强大招聘潜能

    编辑人员注释:今天这篇文章由 Pruffi 创始人 Alena Vladimirskaya 和 Pruffi 的 CTO Alexander Ivanov 联合撰写,介绍了该公司如何使用 Window ...

  2. poj2405---体积几何

    #include <stdio.h> #include <stdlib.h> #include<math.h> #define pi acos(-1) int ma ...

  3. Android 匿名共享内存C++接口分析

    在上一篇Android 匿名共享内存C接口分析中介绍了Android系统的匿名共享内存C语言访问接口,本文在前文的基础上继续介绍Android系统的匿名共享内存提供的C++访问接口.在C++层通过引入 ...

  4. redis持久化与可用性

    redis对于持久化有快照及aof日志文件两种形式. 快照db文件,长处是二进制,大小比aof日志文件小.但会丢失最后一次成功备份时间到down机时间的数据. aof相比而言文件大小就大了点,但相对快 ...

  5. 假设写一个android桌面滑动切换屏幕的控件(一)

    首先这个控件应该是继承ViewGroup: 初始化: public class MyGroup extends ViewGroup{ private Scroller mScroller; priva ...

  6. 算法精解(C语言描述) 第3章 读书笔记

    第3章 递归 1.基本递归 假设想计算整数n的阶乘,比如4!=4×3×2×1. 迭代法:循环遍历其中的每一个数,然后与它之前的数相乘作为结果再参与下一次计算.可正式定义为:n! = (n)(n-1)( ...

  7. 让你在DOS中任意切换目录

    尽管Windows图形界面早已经取代了无趣的DOS字符界面(废话,Vista都呼之欲出了),不过在日常操作中,还是有很多时候需要用到命令提示符.比如批量重命名文件时.执行字符命令时.在命令行下恢复系统 ...

  8. Kettle 学习笔记

    一直用SSIS做ETL,越来越感觉这玩意不是亲生的.因此萌生换ETL工具的想法,不过Kettle社区版没什么调度系统,貌似错误处理也不是很方便,且先了解吧. 本文简略的记录了整个软件的使用流程. 开始 ...

  9. Hadoop学习之Mapreduce执行过程详解

    一.MapReduce执行过程 MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示: ...

  10. C/C++中使用的正则表达式库

    正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 正则引擎主要可以分 ...