精华内容
下载资源
问答
  • 原文见链接c语言中怎样用scanf()读入带空格的字符串 原文见链接c++输入(空格)
    展开全文
  •   楼主 发表于: 2011-01-14 15:39:55 #include <stdio.h> int main(void){ int i; char a[5]; scanf("...运行输入hello world 回车则输出只是空格之前部分,怎样...

     

     

    楼主

    发表于: 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++/C中如何输入带空格的字符串 带空格的字符串输入(c++) 对于string类: getline(cin, str); 对于字符数组 方法一:getline(); 读入整行数据,使用回车键输入的换行符来确定输入结尾。 书写格式: cin.getline(str...

    C++/C中如何输入带空格的字符串

    带空格的字符串输入(c++)
    对于string类:
    getline(cin, str);
    对于字符数组
    方法一:getline();
    读入整行数据,使用回车键输入的换行符来确定输入结尾。
    书写格式:
    cin.getline(str, len);
    第一个参数str用来存储输入行的数组名称,第二个参数是要读取的字符数。
    方法二
    书写格式:
    cin.get(str, len);
    两者都是读取一行输入,直至换行符。
    区别:getline将换行符丢弃,而get()将换行符保留在输入序列里

    带空格的字符串输入**(c语言)**
    C输入使用scanf函数,但scanf默认回车和空格是输入不同组之间的间隔和结束符号,
    所以输入带空格,tab或者回车的字符串是不可以的,解决方法如下 :
    利用格式符“%[]”它的作用为扫描字符集合。Scanf(“%[^c]”,str);
    其中“c”是一个具体的字符常量(包括控制字符)。
    当输入字符串时,字符“c”将被当作当前输入的结束符。
    利用此格式符就可以由编程者自己指定一个输入结束符。

    展开全文
  • C语言与c++如何输入带空格的字符串

    万次阅读 2019-05-19 16:46:02
    一、C中(用scanf读入一个带空格的字符串) 样例: #include <stdio.h>int main(){ char s[100]; scanf( "%[^\n]", s ); //注意:连用时一定要加上 getchar() 吸收换行符 printf( "%s\n", s );// printf("%c\n...

    一、C中(用scanf读入一个带空格的字符串)

    样例:

    1. #include <stdio.h>
    2. int main(){
    3. char s[100];
    4. scanf( "%[^\n]", s ); //注意:连用时一定要加上 getchar() 吸收换行符
    5. printf( "%s\n", s );
    6. // printf("%c\n", s[2] );
    7. return 0;
    8. }

    定制自己的扫描集 %[abc]、%[a-z]、%[^abc]、%[^a-z]。[ ]内是匹配的字符,^表示求反集

     

    二、C中(gets函数)

    可以无限读取,以回车结束读取。 
    gets()函数从标准输入(键盘)读入一行数据,所谓读取一行,就是遇到换行符就返回。gets()函数并不读取换行符’\n’,它会吧换行符替换成空字符’\0’,作为c语言字符串结束的标志。 
    gets()函数经常和puts()函数配对使用,puts()函数用于显示字符串,并自动在字符串后面添加一个换行标志’\n’ 
    但是不推荐使用因为gets(s),(s为一个字符串)。gets没有指明读取的最大字符数。这里就会出现一个潜在的问题:gets将不停的往s中储存内容,而不管是否存储的下!gets函数不会管s的可用空间有多少。如果输入的字符串过长,会导致缓冲区溢出(buffer overflow),即多余的字符超出了指定的目标空间。gets()函数就会访问未被分配的内存空间,如果这些内存未被使用,不会立即出现问题;如果这片空间已经存有数据,就会擦除掉程序中的其他数据,会导致程序中止。 
    在C11标准里,gets函数已经被正式删除了。

     

    三、C中(fgets函数)

    gets与gets互为兄弟。 
    fgets(char buf, int bufsize, FILE stream ):。注意第二个参数bufsize,这个参数就限制了读取的字符的个数,这就可以解决gets()函数的缺陷。我们知道fgets() 函数主要用于读取文件,如果要读取键盘,则stream参数应该为stdin。需要注意的是,如果bufsize设置为n,那么fgets()函数最多读取n-1个字符,之所以用“最多”这个词是因为,如果在之前遇到了换行符”\n”,fgets函数也会返回,读取工作将会停止,而这个”\n”也会是buf字符串中最后一个有效字符(再往后就是字符串结束符”\0”了 ),只有在一种情况下,buf不会以”\n”结尾:读到文件结束符,并且文件的最后一个不是以”\n”结尾。还有就是,fgets()函数会读取换行符(这一点和gets函数不同),当读取结束后,fgets函数会为buf在末尾添加一个空字符作为字符串的结束。 
    当一个字符都没有读到时,fgets函数返回NULL。

     

    四、C中(fgetc函数)

    getc(fin),他会读取一个打开的文件fin,读取一个字符,然后返回一个int值。为什么返回的是int而不是char呢?因为如果文件结束,fgetc将返回一个特殊标记EOF,它并不是一个char。如果把fgetc(fin)的返回值强制转换为char,将无法把特殊值的EOF和普通字符区分开。如果要从标准输入读取一个字符,可以用getchar,它等价于fget(stdin)。 
    使用fgetc(fin)可以从打开的文件fin中读取一个字符。一般情况下应当再检查它不是EOF后再将其转化成char值,从标准输入读取一个字符可以用getchar,他等价于fgetc(stdin)。 
    fgetc和getchar将读取“下一个字符”,因此需要知道在各种情况下,“下一个字符”是哪个。如果用“scanf()”读取整数,则要是再输入后多加了一个空格,用getchar读取到的将是这个空格;如果在输入之后紧跟着换行,则读取到的是回车符“\n”。

     

    五、C++中(getline函数)

    string类中的getline函数简单基本用法。

    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4. int main()
    5. {
    6. string a;
    7. getline(cin,a);
    8. cout<<a<<endl;
    9. return 0;
    10. }

    string类中的getline函数高级用法。

    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4. int main()
    5. {
    6. string a;
    7. char s='0';
    8. getline(cin,a,s);
    9. cout<<a<<endl;
    10. return 0;
    11. }

    此时,getline函数只会读取自己定义的字符s之前的字符,读取到s就停止读取了。

    在char数组下也可以使用getline()函数简单用。

    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4. int main()
    5. {
    6. char a[100];
    7. cin.getline(a,sizeof(a));
    8. cout<<a<<endl;
    9. return 0;
    10. }

    cin.get()的用法同上。

    展开全文
  • scanf()函数如何读入一个带空格的字符串 char a[20]={0}; printf("请输入: "); scanf("%s[^\n]",a); printf("%\ns",a); system("pause"); 运行: 请输入:I love you I请按任意键继续… 希望的运行结果是...
  • 使用scanf(“%s”,str)时,如果输入的字符串内有空格,会导致读入的字符串空格直接结束。 解决方法 1. 使用gets函数 #include <stdio.h> int main() { char str[100]; gets(str); printf("%s",str); } 2...
  • 2.可以用来输入带空格的字符串。 3.可以无限读取,不会判断上限,因此使用gets不安全,可能会造成溢出。 fgets() 和 fputs() 函数 : 1.fgets函数的第2个参数指明了读入字符的最大数量.如果该参数是n, 那...
  • 字符串带空格读入在某些场合用很多,题主总结了三中比较好用方法: ①、sring类型不能读取空格,但是getline(cin,string)可以,字符串以回车“\n”结束读取。 ②、C语言中,常使用gets(str),同样以回车...
  • 当你输入带空格的一段字符串时,比如:“I love you”。如果你用scanf输入,语句应该是这样的: char str[100]; scanf("%s",str); 而你得到的结果却是 I 由此,我们可以断定,scanf遇到空格就停止读入了。 那么...
  • C/C++读入多行字符串string

    万次阅读 多人点赞 2016-09-30 14:11:00
    这样当我们输入一行带空格的字符串,就要考虑getline函数,从流中读入一行字符串。1. 读入不含空格字符串 首先我要介绍一下标准C++字符串类string,它包含在”string”头文件中,记住不是string.h或者cstring头文件...
  • 代码如下: while (1) { scanf("%[^\n]", str); printf("%s\n", str);...这样做的好处是我们可以读入一行带空格的字符串,输入字符串完毕后回车即可赋值给str。 但当这个逻辑放入循环里之后,输入一行字符串,...
  • 这是因为scanf函数只将字符串中第一空格前的字符串 输入到字符数组中...为了解决scanf函数不能完整的读入带空格的字符串c语言专门提供了一个字符串函数gets,他可以读入包括空格的字符串,至遇到回车符为止。 ...
  • 字符串比较不能直接用== ,要用strcmp. 用strcmp时注意当相等时,返回0,...用gets才能读入带空格的字符串,scanf遇到空格,回车,TAB认为输入结束. 用gets和scanf("%c",&x)时,注意要用getchar()吃掉缓冲区的空格. ...
  • AVM输入总结

    2020-09-09 17:37:00
    读入一段带空格的字符串使用gets() 头文件–》#include<stdio.h> 读入一段不带空格的字符串使用scanf("%s",str) 头文件–》#include<string.h> C++: 读入一段带空格的字符串使用gets() 头文件–》#...
  • 程序从标准输入上读入一行字符串,是一个合法后缀表达式,数字和运算符之间由空格分隔。其中数字可以是整数,也可以是有小数部分浮点数。 【输出形式】 向标准输出打印结果。输出只有一行,是转换后...
  • C2第三次作业第一题,题面如下: 【问题描述】 将由数字和四则运算符组成后缀...程序从标准输入上读入一行字符串,是一个合法后缀表达式,数字和运算符之间由空格分隔。 其中数字可以是整数,也可以是...
  • ,以下不能将一行(不超过80个字符空格的字符串正确读入的语句或语句组是( )。. 解析: 字符串的输入不能用scanf("%s,s"),而应该使用gets(s) 2.有以下程序段 #include<stdio.h> int j;float y;char ...
  • 格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如“%d”表示按十进制整型输出,“%ld”表示按十进制长整型输出,“%c”表示按字符型输出等。后面将专门...
  • 后缀转中缀C语言实现

    2010-04-20 19:17:22
    程序从标准输入上读入一行字符串,是一个合法后缀表达式,数字和运算符之间由空格分隔。其中数字可以是整数,也可以是有小数部分浮点数。 【输出形式】 向标准输出打印结果。 输出只有一行,是转换...
  • gets函数完美替代

    2019-03-14 20:08:00
    而若要读入一行带空格的字符串时 有些人会用gets来代替 然而,gets的最大问题在于:会读取超过数组长度上限个字符,而超出长度的字符会被读进其他未被分配的内存空间,如果这段空间已经有了数据,就会导致程序...
  • 用另一个函数对它们排序,然后在主函数输出这10个已排好序的字符串。 80 10.10用指针数组处理上一题目,字符串不等长。 81 10.11将n个数按输入输出顺序的逆序排列,用函数实现。 82 10.12有一个班4个学生,5门课。...
  • 这个引号的字符串包括一个或多个 指定不同解析选项的关键字。这些关键字为: eol=c - 指一个行注释字符的结尾(就一个) skip=n - 指在文件开始时忽略的行数。 delims=xxx - 指分隔符集。这个替换了空格和跳格键的...
  • #include "string.h" /*字符串函数*/ #include "conio.h" /*屏幕操作函数*/ #include "mem.h" /*内存操作函数*/ #include "ctype.h" /*字符操作函数*/ #include "alloc.h" /*动态地址分配函数*/ #include "dos....
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    3、从终端读入字符集大小为n(即字符的个数),逐一输入n个字符和相应n个权值(即字符出现频度),建立哈夫曼树,进行编码并且输出。 注:可用C或C++编写。 4、用邻接矩阵或邻接图实现一个有向图...
  • 《数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    字符串 C.队 D.栈 15. 下列数据中,(C )是非线性数据结构。【北京理工大学 2001 六、1(2分)】 A.栈 B. 队列 C. 完全二叉树 D. 堆 16.连续存储设计时,存储单元地址(A )。【中山大学 1999 一、1(1分...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

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

c语言 订阅