加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c语言中读入带空格的字符串

发布时间:2020-12-14 01:43:04 所属栏目:百科 来源:网络整理
导读:http://blog.csdn.net/pipisorry/article/details/37073023 问题: scanf("%s",a); 运行输入helloworld 回车 则输入到a的只是空格之前的部分,怎样把空格之后的部分也输出? 1. scanf ( "%[^n]" ,str); #include stdio.hint main(){ char str[50]; scanf( "

http://blog.csdn.net/pipisorry/article/details/37073023

问题:

scanf("%s",a);

运行输入helloworld
回车
则输入到a的只是空格之前的部分,怎样把空格之后的部分也输出?


1.scanf("%[^n]",str);
#include <stdio.h>
int main(){
    char str[50];
    scanf( "%[^n]",str );
    printf( "%sn",str );
    return 0;
}
more:
scanf中的正则表达式
1、定制自己的扫描集%[abc]、%[a-z]、%[^abc]、%[^a-z],比isdigit()、isalpha()更加灵活。[]内是匹配的字符,^表示求反集。
inti;

charstr[80],str2[80];

//scanf("%d%[abc]%s",&i,str,str2);
//printf("%d%s%sn",i,245)">//scanf("%[a-zA-Z0-9]",str);
//scanf("%[^abce]",245)">scanf("%[^a-z]",245)">printf("%sn",245)">2、读入一个地址并显示内存地址的内容
intmain(void){
charch='c';
printf("%pn",&ch);//printtheaddressofch.
char*p;
cout<<"Enteranaddress:";
scanf("%p",&p);//inputtheaddressdisplayedabove
printf("Valueatlocation%pis%cn",p,*p);
return0;
}
3、丢弃不想要的空白符:scanf("%c%c");
4、控制字符串中的非空白符:导致scanf()读入并丢弃输入流中的一个匹配字符。"%d,%d";
5、压缩输入:在格式码前加上*,则用户就可以告诉scanf()读这个域,但不把它赋予任何变量。
scanf("%c%*c,&ch);使用此方法可以在字符处理时吃掉多余的回车。

2.scanf()
int t[999];
int sum=0;
while(scanf("%c",&t[sum++])!=EOF);

3.gets()fgets()
#include <stdio.h>  
//char *fgets( char *str,int num,FILE *stream ); 
int main(){
    char buffer[10]; 
    //fgets(buffer,10,stdin); //带有回车符
    gets(buffer);    //没有回车符
 
    printf("%s",buffer); 
    return 0;
}
more:
gets()不检查字符串容量,有可能越界写数据,用户可不一定给你按套路出牌,可能输入长达300字节甚至2k字节的字符串,这样的话很危险
虽然strlen,strcyp等等这些函数因为追求高效率也不会检查指针是否为空,指针是否可写,但是这些函数是C程序员来操作的,C程序员有正确使用函数的素质。
但是gets()是用户来输入,用户并不知道字符串上限,而且就算知道,也不一定有素质去按规定使用,要多多注意
用fgets(str,80,stdin);就不危险了,fgets比较安全
from:http://blog.csdn.net/pipisorry/article/details/37073023

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读