c语言中怎样用scanf()读入带空格的字符串?
楼主
发表于: 2011-01-14 15:39:55
#include <stdio.h>
int main(void)
{
int i;
char a[5];
scanf("%s", a);
printf("%s\n", a);
return 0;
}
运行输入hello world
回车
则输出的只是空格之前的部分,怎样把空格之后的部分也输出呢?
2楼
回复于: 2011-01-14 17:27:23
谁说scanf不能做到?
#include <stdio.h>
int main()
{
char str[128];
scanf( "%[^\n]", str );
printf( "%s\n", str );
return 0;
}
scanf中的正则表达式
1、定制自己的扫描集 %[abc]、%[a-z]、%[^abc]、%[^a-z],比isdigit()、isalpha()更加灵活。[]内是匹配的字符,^表示求反集。
int i;
char str[80], str2[80];
// scanf("%d%[abc]%s", &i, str, str2);
// printf("%d %s %s\n",i,str,str2);
// scanf("%[a-zA-Z0-9]", str);
// scanf("%[^abce]", str);
scanf("%[^a-z]", str);
printf("%s\n",str);
2、读入一个地址并显示内存地址的内容
int main(void)
{
char ch='c';
printf("%p\n", &ch); // print the address of ch.
char *p;
cout<<"Enter an address: ";
scanf("%p", &p); //input the address displayed above
printf("Value at location %p is %c\n",p,*p);
return 0;
}
3、丢弃不想要的空白符:scanf("%c %c");
4、控制字符串中的非空白符:导致scanf()读入并丢弃输入流中的一个匹配字符。"%d,%d";
5、压缩输入:在格式码前加上*,则用户就可以告诉scanf()读这个域,但不把它赋予任何变量。
scanf("%c%*c, &ch); 使用此方法可以在字符处理时吃掉多余的回车。
例1:从<sip:tom@172.18.1.133>中提取tom
const char* url = "<sip:tom@172.18.1.133>";
char uri[10] = {0};
sscanf(url, "%*[^:]:%[^@]", uri);
cout << uri << endl;
例2:从iios/12DDWDFF@122中提取 12DDWDFF
const char* s = "iios/12DDWDFF@122";
char buf[20];
sscanf(s, "%*[^/]/%[^@]", buf);
cout << buf << endl;
3楼
回复于: 2011-01-14 21:15:47
int t[999];
int sum=0;
while(scanf("%c",&t[sum++])!=EOF);
相关文章
- c语言--通讯录的实现与ScreenToGif
- espnet中的transformer和LSTM语言模型对比实验
- JS弱类型语言的优势——之模板字符串
- IBM预通过R语言扩展 简化Watson系统的应用
- 视觉与语言领域年度进展概述
- 《Java语言导学(原书第6版)》一第2章 面向对象的编程概念
- Dart语言学习(四)Dart字符串
- 一篇详细的linux中shell语言的字符串处理
- MadCap Flare 2022,语言或格式的文档
- c语言复制文件程序
- 世界上最有能量的语言,一定要经常说!
- 程序员常秃顶?Python创始人笑了,防脱发还得学这门语言,不然干脆转行得了
- c语言libcurl 使用实例get/post方法+c语言字符串处理
- go语言方法实例