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:[email protected]>中提取tom
const char* url = "<sip:[email protected]>";
char uri[10] = {0};
sscanf(url, "%*[^:]:%[^@]", uri);
cout << uri << endl;

例2:从iios/[email protected]中提取 12DDWDFF
const char* s = "iios/[email protected]";
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);

时间: 2024-10-01 07:50:50

c语言中怎样用scanf()读入带空格的字符串?的相关文章

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

http://blog.csdn.net/pipisorry/article/details/37073023 问题: scanf("%s", a); 运行输入hello world 回车 则输入到a的只是空格之前的部分,怎样把空格之后的部分也输出? 1. scanf( "%[^\n]", str ); #include <stdio.h> int main(){ char str[50]; scanf( "%[^\n]", str

如何在VC6.0里存储带空格的字符串

char str[20]; cin.getline(str,20) 或 string str; getline(cin,str); 据说都可以存储含空格字符串,但我用VC6.0时都出错 以下为粘贴 关于在C++中输入带空格的字符串的方法 yibcs 2012-08-10 20:44:17 此人文章 #include <iostream> #include <stdio.h>#include <string> using namespace std; void main(

C++ 输入 带空格的字符串

法一: #include <iostream> #include <string> using namespace std; void main() { char test[100]; // 定义够长的数组空间 for(int i=0;i<100;i++) test[i]='\0'; cin.getline(test,100); // 整行读取(包括空格) cout<<test<<endl; } 法二: #include <iostream>

接收一行带空格的字符串

public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; while ((str = br.readLine()) != null) { List<String> resultList = executeLinuxCommand(str); for (String

带空格的字符串逆转(简洁版)

#include<iostream>#include<algorithm>#include<string>using namespace std; int main(){    string str;    getline(cin,str);    reverse(str.begin(),str.end());    cout<<str;    return 0;} 原文地址:https://www.cnblogs.com/zhoumin6012/p/104

C/C++ 中带空格字符串输入的一些小trick

今天在重温 C++ 的时候发现自己存在的一些问题,特此记录下来. 我们可以看一下下面这段代码: #include <iostream> #include <cstdio> #include <string> #include <cctype> using namespace std; int main(int argc, char const *argv[]) { string s; cin >> s; int cnt[26]={0};//字母统

Go语言中的单引号、双引号、反引号

=Start= 搜索关键字: golang single quotes golang double quotes golang back quotes 参考结果: 结论写在最前:在Go语言中不倾向于使用单引号来表示字符串,请根据需要使用双引号或反引号. 一个Go语言字符串是一个任意字节的常量序列.Go语言的字符串类型在本质上就与其他语言的字符串类型不同.Java的String.C++的std::string以及python3的str类型都只是定宽字符序列,而 Go语言的字符串是一个用UTF-8编

[原创]C++带空格字符串的输入问题

字符串一直是一个重点加难点,很多笔试面试都会涉及,带空格的字符串更是十分常见,现在对字符串的输入问题进行一下总结. C++用cin输入的时候会忽略空格以后的字符,比如 char a[100]; cin>>a; C++用cin输入的时候会忽略空格以后的字符,输入"hello world"输出的是"hello": 如果用循环输入 for(int i=0;i<100;i++) { cin>>a[i]; } 这样输入100个数吗?或者定义一个n

C语言中最常用的三种输入输出函数scanf()、printf()、getchar()和putchar()

本文给大家介绍C语言中最常用的三种输入输出函数scanf().printf().getchar()和putchar(). 一.scanf()函数格式化输入函数scanf()的功能是从键盘上输入数据,该输入数据按指定的输入格式被赋给相应的输入项.函数一般格式为:scanf("控制字符串",输入项列表):其中控制字符串规定数据的输入格式,必须用双引号括起,其内容是由格式说明和普通字符两部分组成.输入项列表则由一个或多个变量地址组成,当变量地址有多个时,各变量地址之间用逗号“,”分隔.sca