C++怎样c 读取txt 空格隔开带空格带回车的一段话

这几天,在做assignment的时候发现了一个问题,当我在cin&&中输入带有空格的课程名字的时候,程序会中断。我也在网上查看了很多关于这个问题的资料,例如一下的代码:
#include &iostream.h&
void main()
char str[20];
cout&&"Input :";
cin.getline(str,20);
cout&&str&&
这个代码我亲自用过,但是在我的电脑以及VMware虚拟机中的VC
6.0中测试的时候,发现根本不行,依然中断。而在学校的机房却完全可以,有人说是我的人品问题。
后来找到了一个方法:
#include &iostream&
#include &stdio.h&
#include &string&
void main()
&char unitName[30];
&cout&&"nPlease
enter the unit name:n";
&getchar();
&gets(unitName);
&cout&&unitName&&
用getchar(); 和gets(unitName);的组合,
getchar()是程序等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。
而gets()输入是不会遇到空格就停止的函数。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:52103次
积分:2593
积分:2593
排名:第11439名
原创:215篇
转载:34篇
(214)(15)(6)(4)(14)(1)c语言中读入带空格的字符串
http://blog.csdn.net/pipisorry/article/details/
scanf(%s, a);
运行输入hello world
则输入到a的只是空格之前的部分,怎样把空格之后的部分也输出?
1. scanf( %[^ ], str );
int main(){
char str[50];
scanf( %[^
printf( %s
more: scanf中的正则表达式
1、定制自己的扫描集 %[abc]、%[a-z]、%[^abc]、%[^a-z],比isdigit()、isalpha()更加灵活。[]内是匹配的字符,^表示求反集。
char str[80], str2[80];
// scanf(%d%[abc]%s, &i, str, str2);
// printf(%d %s %s ,i,str,str2);
// scanf(%[a-zA-Z0-9], str);
// scanf(%[^abce], str);
scanf(%[^a-z], str);
printf(%s ,str);
2、读入一个地址并显示内存地址的内容
int main(void){
char ch='c';
printf(%p , &ch); // print the address of ch.
cout& scanf(%p, &p); //input the address displayed above
printf(Value at location %p is %c ,p,*p);
3、丢弃不想要的空白符:scanf(%c %c);
4、控制字符串中的非空白符:导致scanf()读入并丢弃输入流中的一个匹配字符。%d,%d;
5、压缩输入:在格式码前加上*,则用户就可以告诉scanf()读这个域,但不把它赋予任何变量。
scanf(%c%*c, &ch); 使用此方法可以在字符处理时吃掉多余的回车。
int t[999];
int sum=0;
while(scanf(%c,&t[sum++])!=EOF);
3.gets() gets()
//char *fgets( char *str, int num, FILE *stream );
int main(){
char buffer[10];
//fgets(buffer,10,stdin); //带有回车符
gets(buffer);
//没有回车符
printf(%s,buffer);
more: gets() 不检查字符串容量,有可能越界写数据,用户可不一定给你按套路出牌,可能输入长达300字节甚至2k字节的字符串,这样的话很危险
虽然strlen,strcyp等等这些函数因为追求高效率也不会检查指针是否为空,指针是否可写,但是这些函数是C程序员来操作的,C程序员有正确使用函数的素质。 但是gets() 是用户来输入,用户并不知道字符串上限,而且就算知道,也不一定有素质去按规定使用,要多多注意
用fgets(str,80,stdin);就不危险了,fgets比较安全&
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'}

我要回帖

更多关于 c语言读取空格 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信