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. VC++2008 用空工程创建 DLL

    VC++2008 用空工程创建 DLL 一.创建 DLL 工程项目: 1)点击菜单[File] -> [New] -> [Project...] 弹出 “New Project” 对话框: ...

  2. configure mount nfs

    qemu-img convert -f raw -O qcow2 nix.img ruiynix.qcow2 1,yum createrepo

  3. 修改ubuntu的默认python版本

    ubuntu14.04LTS上装有两个版本的python:python2.7.6与python3.4,默认使用python2.7.6. 可以使用以下命令来修改默认python版本: sudo cp / ...

  4. Alisha’s Party(队列)

    Alisha’s Party Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  5. ubuntu14.04 Markdown编辑器推荐之Remarkable

    如今已经习惯了用Markdown编辑器写博文的习惯,那么ubuntu以下有什么好用的呢?搜索中发现了这个叫Remarkable的免费Markdown编辑器.为什么推荐这个呢?说说它的特点: 实时预览 ...

  6. 关于 FPGA 和 外部芯片接口时序设计

    在看这篇文章之前, 建议先好好读下这篇文章.http://download.csdn.net/detail/angelbosj/8013827. 因为我不太会用 VISio.要是哪位网友能告诉我.怎么 ...

  7. history.js 一个无刷新就可改变浏览器栏地址的插件(不依赖jquery)

    示例: http://browserstate.github.io/history.js/demo/     简介   HTML4有一些对浏览历史的前进后退API的支持如:   window.hist ...

  8. Oracle Select into 用Sql server替换

    --Oracle: DECLARE n_count int; begin Select count(*) into n_count from from M_Test where ENTITYLSH = ...

  9. Asp.Net请求处理机制中IsApiRuntime解析

    今天看了web请求的生命周期,看完了还有些不懂,就是用反编译工具,查看封装内库的内部实现. 从计算机内部查到web.dll,使用反编译工具打开 打开后 public int ProcessReques ...

  10. HDU4323-Magic Number(levenshtein distance-编辑距离)

    描述: There are many magic numbers whose lengths are less than 10. Given some queries, each contains a ...