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. mybatis.generator.configurationFile

    mybatis.generator.configurationFile 有一个更好的配置方法,可以不用在generateConfig.xml里面写死驱动的地址:如果你的mybatis连接也是在pom. ...

  2. oracle初始安装大小

    oracle初始安装大小 /ruiy/ocr/DBSoftware/app/oracle/ruiy/ocr/DBSoftware/app/oraInventory/ruiy/ocr/DBData/or ...

  3. 【虚拟化实战】容灾设计之四VPLEX

    作者:范军 (Frank Fan) 新浪微博:@frankfan7 VPLEX等存储设备的出现,可以实现双活数据中心,最大程度的有效利用运算和存储资源. 在“容灾设计之三Stretched Clust ...

  4. python中判断readline读到文件末尾

    fp = open('somefile.txt') while True: line = fp.readline() if not line: #等价于if line == "": ...

  5. mac文件权限

    如何设置文件/或文件夹权限为777 进入终端,切换到指定目录,输入以下命令,后面添加你的文件名/目录名$sudo chmod -R 777 (文件名/目录名) 或 $chmod 777 ./test. ...

  6. 汉诺塔III 汉诺塔IV 汉诺塔V (规律)

    汉诺塔III Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  7. JS判断是否安装flash player及当前版本

    function flashChecker() { var hasFlash = 0; //是否安装了flash var flashVersion = 0; //flash版本 if(document ...

  8. 在MyEclipse中统计项目行数

    今天闲来无事就把自己曾经做过的一些小项目拿出来看一下,把一些自己觉得不好的地方又又一次改一下,突然想起有人说过大学生在毕业时至少要完毕多少代码才算合格,所以我就想统计一下自己做过的项目的代码量,在网上 ...

  9. JavaScript之面向对象学习五(JS原生引用类型Array、Object、String等等)的原型对象介绍

    1.原型模式的重要性不仅仅体现在创建自定义类型方面,就连所有的原生的引用类型(Obejct.Array.String等等)都在构造函数的原型上定义方法和属性.如下代码可以证明: alert(typeo ...

  10. 性能优化工具---top

    作用: 实时显示linux下各个进程的资源占用情况 参数: -d :后面可以接秒数,就是整个程序画面更新的秒数.预设是 5 秒: -p :指定某些个 PID 来进行观察监测而已. -b :以批次的方式 ...