精华内容
参与话题
问答
  • C++各种输入

    千次阅读 多人点赞 2018-07-23 12:50:44
    说明:这个是单字符的输入,用途是输入一个字符,把它的ASCALL码存入到a中 处理方法:与cin不同,cin.get() 在缓冲区遇到[enter],[space],[tab]不会作为舍弃,而是继续留在缓冲区中 (2)2个参数 用法:cin....

    1.cin.get()基本用法

    (1)1个参数

    用法:a = cin.get() 或者 cin.get(a)

    结束条件:输入字符足够后回车

    说明:这个是单字符的输入,用途是输入一个字符,把它的ASCALL码存入到a中

    处理方法:与cin不同,cin.get() 在缓冲区遇到[enter],[space],[tab]不会作为舍弃,而是继续留在缓冲区中

    (2)2个参数

    用法:cin.get(arrayname,size) 把字符输入到arrayname中,长度不超过size

    注释:arrayname必须是char[]类型,即char数组类型,不可以为string类型;size是指输入长度,即允许输入的最大长度。

    处理方法:假设把数据输入到 char a[arraylength],数组长度为arraylength。cin.get(a,size)—size,arraylength不同可以分为四类:

    类1:输入串长arraylength,会自动扩张arrayname大小,使能保存所有数据

    例1:char a[10];cin,get(a,20);

    输入:123456789012[enter]

    输出a数组:123456789012 可以发现,输入12个字符到a[10]中,系统自动扩充a[10],此时实际数组长为13(‘123456789012’\0’’)。但当计算sizeof(a)时,还是现实为10

    类2:输入串长

    例2:char a[10];cin.get(a,20);

    输入:12345[enter]

    输出:12345,此时数组内数据为‘12345‘\0’’

    类3:输入串长>size,先截取size个字符,若还是大于arraylength,则输入前arraylength-1个字符,最后补充‘\0’

    例3:char a[5];cin,get(a,10);

    输入:123456789012[enter]

    输出:123456789 先截取了9个字符变成‘123456789‘/0‘’,然后放入到a中,a自动扩张长度

    类4:输入串长>size,先截取size个字符,若小于arraylength,则把截取串放入数组中,最后补充‘\0’

    例4:char a[15],cin.get(a,10)

    输入:123456789012[enter]

    输出:123456789 此时数组内为‘123456789‘\0’’ 注意:前size-1有效,最后一个补‘\0’

    综上:当吧大于数组长度的字符串放出char a[arraylength]中,系统自动扩张数组a的长度使a能放得下,但是这么做容易产生运行错误。

    (3)3个参数

    用法:cin.get(arrayname,size,s) 把数据输入到arrayname字符数组中,当到达长度size时结束或者遇到字符s时结束

    注释:a必须是字符数组,即char a[]l类型,不可为string类型;size为最大的输入长度;s为控制,遇到s则当前输入结束缓存区里的s将被舍弃。

    2.cin.getline()基本用法
    cin.getline() 的用法和 cin.get() 用法大致相同,没有一参数用法,只有二参数,三参数两类

    cin.gerline( arrayname, size )

    cin.getline( arrayname, size, s )

    用法与 cin.get() 效果大致相同,但也有些区别

    (1)cin.getline(arrayname,size)与cin.get(arrayname,size)的区别

    cin.get(arrayname,size)当遇到[enter]时会结束目前输入,他不会删除缓冲区中的[enter]

    cin.getline(arrayname,size)当遇到[enter]时会结束当前输入,但是会删除缓冲区中的[enter]

    #include  <iostream>
    using namespace std;  
    
    int main()  
    {  
        char a[10];char b;  
            cin.get(a,10);  
        cin.get(b);  
        cout<<a<<endl<<int(b);  
    }  

    输入:12345[enter]

    输出:12345 【换行】 10

    说明:cin.get(a,10)把12345到a中,遇到[enter]结束,但是不把[enter]删除,则把[enter]输入到b中,(enter的ASCALL码为10)

    include  <iostream>
    using namespace std;  
    
    int main()  
    {  
        char a[10];char b;  
            cin.getline(a,10);  
        cin.get(b);  
        cout<<a<<endl<<int(b);  
    }  

    输入:12345[enter]a[enter]

    输出:12345【换行】97

    说明:cin.getline(a,10)吧12345输入到a中,遇到{enter}结束,并把缓冲区中[enter]删除,把接下来的a输入到b中

    (2)cin.getline(arrayname,size,s)与cin.gei(arrayname,size,s)的区别
    cin.getline( arrayname , size , s ) 当遇到s时会结束输入,并把s从缓冲区中删除

    cin.get(arrayname , size , s)当遇到s时会结束输入,但不会删除缓冲区中的s。

    include <iostream>
    using namespace std;  
    
    int main()  
    {  
        char a[10];char b;  
        cin.get(a,10,',');  
        cin.get(b);  
        cout<<a<<endl<<b;  
    }  

    输入:12345,[enter]

    输出:12345【换行】,

    说明:cin,get不会删除缓冲区的,

    include <iostream>
    using namespace std;  
    
    int main()  
    {  
        char a[10];char b;  
        cin.getline(a,10,',');  
        cin.get(b);  
        cout<<a<<endl<<int(b);  
    }  

    输入:12345,[enter]

    输出:12345【换行】10

    说明:cin.getline吧12345输入到a中,遇到’,‘结束,并删除缓冲区的’,‘,后面的[enter]输入到b中

    总之,cin.get() 不删,cin.getline() 删。

    运用—以任何符号作为输入分隔符

    例题:输入五个学生的名字,每个学生的名字不超过10个字符,输入时学生名字之间用逗号隔开,把这五个名字存储并换行输出。

    include <iostream>
    using namespace std;  
    
    int main()  
    {  
        char a[5][10];  
        int i;  
        for(i=0;i<4;i )  
            cin.getline(a[i],10,',');  
        cin.getline(a[i],10);  
    
        for(i=0;i<5;i )  
            cout<<a[i]<<endl;  
    }  

    这样我们就可以完成完成用任何符号作为分割符的输入了!此处getline换成get是不行的,因为cin.get不会删除缓冲区中的分隔符’,‘ 后续输入不能继续进行。

    3、getline()
    用法:接收一个字符串,可以接收空格并输出,需包含“#include”

    include <iostream>
    inlucde <string>
    using namespace std;
    main ()
    {
    string str;
    getline(cin,str);
    cout<<str<<endl;
    }

    输入:jkljkljkl
    输出:jkljkljkl

    输入:jkl jfksldfj jklsjfl
    输出:jkl jfksldfj jklsjfl

    4、注意的问题
    1、cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

    2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过

    str=”\n”;
    getline(cin,str);

    的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。

    看下面一段程序:

    include <iostream>
    include <string>
    include <cstdlib>
    using namespace std;
    
    int main(){
        int age;
        //standard input(cin)
        cout<<"Please enter an integer value as your age: ";
        cin>>age;
        cout<<"Your ager is: "<<age<<".\n";
        //cin and string
        string mystr;
        cout<<"What's your name? "<<endl;
       mystr="\n";//*****
        getline(cin,mystr);//*****
        getline(cin,mystr);
        cout<<"Hello,"<<mystr<<".\n";
        char sex;
        cout<<"Please enter a F or M as your sex: ";
        cin>>sex;
        cout<<"Your sex is: "<<sex<<endl;
        cout<<"What's your favorite team? ";
        mystr="\n";//****
        getline(cin,mystr);//****
        getline(cin,mystr);
        cout<<"I like "<<mystr<<".\n";
    
        system("pause");
        return 0;
    }

    运行结果为:
    这里写图片描述

    如果不添加以*注释的代码,则运行结果为:
    这里写图片描述

    参考自:http://blog.csdn.net/a1015553840/article/details/50579396

    展开全文
  • Java的常用输入输出语句

    万次阅读 多人点赞 2018-04-14 19:03:38
    一、概述 输入输出可以说是计算机的基本功能。作为一种语言体系,java中主要按照流(stream)的模式来实现。其中数据的流向是按照计算机的方向确定的,流入计算机的数据流叫做输入流(inputStream),由计算机发出的...

    一、概述

       输入输出可以说是计算机的基本功能。作为一种语言体系,java中主要按照(stream)的模式来实现。其中数据的流向是按照计算机的方向确定的,流入计算机的数据流叫做输入流(inputStream),由计算机发出的数据流叫做输出流(outputStream)

    Java语言体系中,对数据流的主要操作都封装在java.io包中,通过java.io包中的类可以实现计算机对数据的输入、输出操作。在编写输入、输出操作代码时,需要用import语句将java.io包导入到应用程序所在的类中,才可以使用java.io中的类和接口。大笑

    二、输入语句

    1.使用Scanner类:

    (1)使用java.util包。  import java.util.*;

    (2)构造Scanner类对象,它附属于标准输入流System.in。   Scanner snew Scanner(System.in);

    (3)常用的next()方法系列:       nextInt():输入整数    nextLine():输入字符串     nextDouble():输入双精度数     next():输入字符串(以空格作为分隔符)。

    1. import java.util.*;  
    2. public class DEMO_1 {  
    3.     public static void main(String[] args){  
    4.         Scanner snew Scanner(System.in);  
    5.         System.out.print("输入你的姓名:");  
    6.         String name = s.nextLine();  
    7.         System.out.print("输入你的年龄:");  
    8.         int age = s.nextInt();  
    9.         System.out.println("姓名:" + name + "  年龄:" + age );  
    10.         s.close();         //若没有关闭Scanner对象将会出现警告  
    11.     }  

    注释:代码第1行创建了一个Scanner类的对象,这个对象是用来输入的。后面的代码是从控制台的输入中取出一个值,赋值给对应的变量。

    2.使用java.io.BufferedReaderjava.io.InputStreamReader

    步骤:

    (1)使用java.io包。  import java.io.*;

    (2)构造 BufferedReader类对象,它附属于标准输入流System.in。  

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    public class Sandbox4 extends Sandbox2{
        public static void main(String[] args) {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
            String str = null;  
            while(true){
                try {  
                    str = br.readLine();  
                }catch(IOException e){
                    e.printStackTrace();
                }
                if(str.equals("END"))break;
                System.out.print(str);
            }
        }
    }


    请注意:

    (1)read方法:读取单个字符。 返回:作为一个整数(其范围从 0 到 65535 (0x00-0xffff))读入的字符,如果已到达流末尾,则返回 -1 ;

    (2)readLine方法:读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。 返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null。

    3、使用java.io.Console

    public class Sandbox4 extends Sandbox2{
        public static void main(String[] args) {
            Console console = System.console();  
            if (console == null) {  
                throw new IllegalStateException("Console is not available!");  
            } 
            String str = null;
            while(true){
                str = console.readLine("请输入"); 
                if("END".equals(str))break;
                System.out.println(str);
            }        
        }
    }

     输入问题解惑:


    注:该问题图片来源于百度知道。

    三、输出语句

    Java中的输出语句有以下四种:

    System.out.println(1111);//换行打印
    System.out.print(1111);//不换行打印
    System.out.write(2222);//字节输出
    System.out.printf("%+8.3f\n", 3.14);//按格式输出
    1. System.out.println(); 是最常用的输出语句,它会把括号里的内容转换成字符串输出到输出窗口(控制台),并且换行,当输出的是一个基本数据类型时,会自动转换成字符串,如果输出的是一个对象,会自动调用对象的toString();方法,将返回值输出到控制台
    2. System.out.print(); 与第一个很相似,区别就是上一个输出后会换行,而这个命令输出后并不换行。
    3. System.out.printf(); 这个方法延续了C语言的输出方式,通过格式化文本和参数列表输出。





    展开全文
  • C++中输入字符串的几种方法

    万次阅读 多人点赞 2018-08-26 17:19:39
    C++中常见的几种输入字符串的方法如下: cin、cin.get()、cin.getline()、getline()、gets()、getchar() 1. cin&gt;&gt; 用法一:最常用、最基本的用法,输入一个数字: #include &lt;iostream&...

    C++中常见的几种输入字符串的方法如下:

    cin、cin.get()、cin.getline()、getline()、gets()、getchar()

    1. cin>>

    用法一:最常用、最基本的用法,输入一个数字:

    #include <iostream>
    using namespace std;
    main ()
    {
    int a,b;
    cin>>a>>b;
    cout<<a+b<<endl;
    }
    ​
    输入:2[回车]3[回车]
    输出:5

    用法二:接受一个字符串,遇“空格”、“Tab”、“回车”都结束

    #include <iostream>
    using namespace std;
    main ()
    {
    char a[20];
    cin>>a;
    cout<<a<<endl;
    }
    ​
    输入:jkljkljkl
    输出:jkljkljkl
    ​
    输入:jkljkl jkljkl //遇空格结束,所以不能输入多个单词
    输出:jkljkl

    2. cin.get()

    用法一:cin.get(字符变量名)可以用来接收字符

    #include <iostream>
    using namespace std;
    main ()
    {
    char ch;
    ch=cin.get(); //或者cin.get(ch);只能获取一个字符
    cout<<ch<<endl;
    }
    ​
    输入:jljkljkl
    输出:j

    用法二:cin.get(字符数组名,接收字符数)用来接收一行字符串,可以接收空格

    #include <iostream>
    using namespace std;
    main ()
    {
    char a[20];
    cin.get(a,20); //有些类似getline。可以输入多个单词,中间空格隔开。
    cout<<a<<endl;
    }
    ​
    输入:jkl jkl jkl
    输出:jkl jkl jkl
    ​
    输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
    输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')
    ​
    ​

    用法三:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.

    #include <iostream>
    using namespace std;
     
    int main(void)
    {
         
        char arr[10];
        cin.get(arr,10);
        cin.get();//用于吃掉回车,相当于getchar();
        cout<<arr<<endl;
        cin.get(arr,5);
        cout<<arr<<endl;
        system("pause");
        return 0;
    }
     
    输入abcdefghi
    输出abcdefghi
    输入abcde
    输出abcd
    请按任意键继续
     
    #include <iostream>
    using namespace std;
     
    int main(void)
    {
         
        char arr[10];
        cin.get(arr,10);
        //cin.get();//用于吃掉回车,相当于getchar(); 现在把这行注释掉试试看
        cout<<arr<<endl;
        cin.get(arr,5);
        cout<<arr<<endl;
        system("pause");
        return 0;
    }
     
    输入abcdefghi
    输出abcdefghi
    请按任意键继续

    3.cin.getline()

    cin.getline() // 接受一个字符串,可以接收空格并输出

    #include <iostream>
    using namespace std;
    main ()
    {
    char m[20];
    cin.getline(m,5); //与上面基本相同。
    cout<<m<<endl;
    }
    ​
    输入:jkljkljkl
    输出:jklj
    接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;
    ​
    如果把5改成20:
    输入:jkljkljkl
    输出:jkljkljkl
    ​
    输入:jklf fjlsjf fjsdklf
    输出:jklf fjlsjf fjsdklf
    //延伸:
    //cin.getline()实际上有三个参数,cin.getline(接受字符串到m,接受个数5,结束字符)
    //当第三个参数省略时,系统默认为'\0' 是‘/n’吧。
    //如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk
    当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:
    ​
    #include<iostream>
    #include<string>
    using namespace std;
    ​
    main ()
    {
    char m[3][20];
    for(int i=0;i<3;i++)
    {
    cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;
    cin.getline(m[i],20);
    }
    ​
    cout<<endl;
    for(int j=0;j<3;j++)
    cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;
    ​
    }
    ​
    请输入第1个字符串:
    kskr1
    ​
    请输入第2个字符串:
    kskr2
    ​
    请输入第3个字符串:
    kskr3
    ​
    输出m[0]的值:kskr1
    输出m[1]的值:kskr2
    输出m[2]的值:kskr3
    ​

    4. getline()

    getline() // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”

    #include<iostream>
    #include<string>
    using namespace std;
    main ()
    {
    string str;
    getline(cin,str);
    cout<<str<<endl;
    }
    ​
    输入:jkljkljkl //VC6中有个bug,需要输入两次回车。
    输出:jkljkljkl
    ​
    输入:jkl jfksldfj jklsjfl
    输出:jkl jfksldfj jklsjfl
    ​
    和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

    5. gets()

    gets()// 接受一个字符串,可以接收空格并输出,需包含“#include<string>

    #include<iostream>
    #include<string>
    using namespace std;
    main ()
    {
    char m[20];
    gets(m); //不能写成m=gets();
    cout<<m<<endl;
    }
    ​
    输入:jkljkljkl
    输出:jkljkljkl
    ​
    输入:jkl jkl jkl
    输出:jkl jkl jkl
    ​
    类似cin.getline()里面的一个例子,gets()同样可以用在多维数组里面:
    ​
    #include<iostream>
    #include<string>
    using namespace std;
    ​
    main ()
    {
    char m[3][20];
    for(int i=0;i<3;i++)
    {
    cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;
    gets(m[i]);
    }
    ​
    cout<<endl;
    for(int j=0;j<3;j++)
    cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;
    ​
    }
    ​
    请输入第1个字符串:
    kskr1
    ​
    请输入第2个字符串:
    kskr2
    ​
    请输入第3个字符串:
    kskr3
    ​
    输出m[0]的值:kskr1
    输出m[1]的值:kskr2
    输出m[2]的值:kskr3
    ​
    自我感觉gets()和cin.getline()的用法很类似,只不过cin.getline()多一个参数罢了;
    ​
    这里顺带说明一下,对于本文中的这个kskr1,kskr2,kskr3的例子,对于cin>>也可以适用,原因是这里输入的没有空格,如果输入了空格,比如“ks kr jkl[回车]”那么cin就会已经接收到3个字符串,“ks,kr,jkl”;再如“kskr 1[回车]kskr 2[回车]”,那么则接收“kskr,1,kskr”;这不是我们所要的结果!而cin.getline()和gets()因为可以接收空格,所以不会产生这个错误;

    6.getchar()

    getchar()//接受一个字符,需包含“#include<string>

    #include<iostream>
    using namespace std;
    main ()
    {
    char ch;
    ch=getchar(); //不能写成getchar(ch);
    cout<<ch<<endl;
    }
    ​
    输入:jkljkljkl
    输出:j
    ​
    //getchar()是C语言的函数,C++也可以兼容,但是尽量不用或少用;
    展开全文
  • 【C语言】详解输入

    千次阅读 2018-05-11 22:48:03
    C语言的输入 C的输入流: int scanf(const char * restrict format,...); 函数 scanf() 是从标准输入流stdio (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址...

    C语言的输入

    C的输入流:

    int scanf(const char * restrict format,...);

    函数 scanf() 是从标准输入流stdio (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
    函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。

    返回值:scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。
    如:

    scanf("%d %d",&a,&b);

    函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;
    如果只有a被成功读入,返回值为1;
    如果a和b都未被成功读入,返回值为0;
    如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d。

    使用scanf输入数据:

    #include <stdio.h>
    int main(void)
    {
        int a,b,c;
        printf("Give me the value of a,b,c seperated with whitespaces:\n");
        scanf("%d%d%d",&a,&b,&c);
        printf("a=%d,b=%d,c=%d\n",a,b,c);
        return 0;
    }

    &a,&b,&c中的&是寻址操作符,&a表示对象a在内存中的地址 [2] ,是一个右值。变量a,b,c的地址是在编译阶段分配的(存储顺序由编译器决定)。
    这里注意:如果scanf中%d是连着写的如“%d%d%d”,在输入数据时,数据之间不可以用逗号分隔,只能用空白字符(空格或tab键或者回车键)分隔——“2 (空格)3(tab) 4” 或 “2(tab)3(回车)4”等。若是“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4”。

    空白字符

    空白字符会使scanf函数在读操作中略去输入中的一个或多个空白字符。
    非空白字符
    一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
    说明:
    (1)%s 表示读字符串,而 %d 表示读整数。格式串的处理顺序为从左到右,格式说明符逐一与变元表中的变元匹配。为了读取长整数,可以将 L / l 放在格式说明符的前面;为了读取短整数,可以将 h 放在格式说明符的前面。这些修饰符可以与 d、i、o、u 和 x 格式代码一起使用。
    (2)默认情况下,a、f、e 和 g 告诉 scanf() 为 float 分配数据。 如果将 L / l放在这些修饰符的前面,则 scanf() 为 double 分配数据。使用 L 就是告诉 scanf(),接收数据的变量是 long double 型变量。
    (3)如果使用的现代编译器程序支持 1995 年增加的宽字符特性, 则可以与 c 格式代码一起,用 l 修饰符说明类型 wchar_t 的宽字符指针;也可以与 s 格式代码一起,用 l 修饰符说明宽字符串的指针。l 修饰符也可以用于修饰扫描集,以说明宽字符。
    (4)控制串中的空白符使 scanf() 在输入流中跳过一个或多个空白行。空白符可以是空格(space)、制表符(tab)和新行符(newline)。 本质上,控制串中的空白符使 scanf() 在输入流中读,但不保存结果,直到发现非空白字符为止。
    (5)非空白符使 scanf() 在流中读一个匹配的字符并忽略之。例如,”%d,%d” 使 scanf() 先读入一个整数,读入中放弃逗号,然后读另一个整数。如未发现匹配,scanf() 返回。
    (6)scanf() 中用于保存读入值的变元必须都是变量指针,即相应变量的地址。
    (7)在输入流中,数据项必须由空格、制表符和新行符分割。逗号和分号等不是分隔符,比如以下代码:
    1
    scanf(“%d%d”,&r,&c);
    将接受输入 10 20,但遇到 10,20 则失败。
    (8)百分号(%)与格式符之间的星号(*)表示读指定类型的数据但不保存。因此,

    注意

    (1)在高版本的 Visual Studio 编译器中,scanf 被认为是不安全的,被弃用,应当使用scanf_s代替 scanf。
    (2) 对于字符串数组或字符串指针变量,由于数组名可以转换为数组和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上”&”操作符。
    (3) 可以在格式化字符串中的”%”各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。
    (4) scanf函数中没有类似printf的精度控制。
    如: scanf(“%5.2f”,&a); 是非法的。不能企图用此语句输入小数为2位的实数。
    (5) scanf中要求给出变量地址,如给出变量名则会出错
    如 scanf(“%d”,a);是非法的,应改为scanf(“%d”,&a);才是合法的。
    (6) 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。
    C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
    (7) 在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
    例如:
    例如:

    scanf("%c%c%c",&a,&b,&c);
    输入为:d e f

    则把’d’赋予a, ’ ‘(空格)赋予b,’e’赋予c。因为%c 只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此把’ ‘作为下一个字符送给b。
    只有当输入为:def(字符间无空格) 时,才能把’d’赋于a,’e’赋予b,’f’赋予c。 如果在格式控制中加入空格作为间隔,

    scanf("%c %c %c",&a,&b,&c);

    则输入时各数据之间可加空格。

    问题

    如何让scanf()函数正确接受有空格的字符串?如: I love you!

    #include <stdio.h>
    
    int main(void)
    
    {
    
    char str[80];
    
    scanf("%s",str);
    
    printf("%s",str);
    
    return 0;
    
    }

    输入:
    I love you!
    输出:I
    上述程序并不能达到预期目的。因为scanf扫描到”I”后面的空格就认为对str的扫描结束(空格没有被扫描),并忽略后面的” love you!”。值得注意的是,我们改动一下上面的程序来验证一下:

    #include<stdio.h>
    
    #include<windows.h>
    
    int main(void)
    
    {
    
    char str[80],str1[80],str2[80];
    
    scanf("%s",str);/*此处输入:I love you!*/
    
    printf("%s\n",str);
    
    Sleep(5000);/*这里等待5秒,告诉你程序运行到什么地方*/
    
    /**
    
    *不是sleep(5)
    
    *1,函数名是Sleep不是sleep。
         *
    2,Windows API中,unsigned Sleep(unsigned)应该是毫秒ms.
    
    */
    
    scanf("%s",str1);/*这两句无需你再输入,是对stdin流再扫描*/
    
    scanf("%s",str2);/*这两句无需你再输入,是对stdin流再扫描*/
    
    printf("%s\n",str1);
    
    printf("%s\n",str2);
    
    return 0;
    
    }

    输入:
    I love you!
    输出:
    I
    love
    you!
    好了,原因知道了,所以结论是:残留的信息 love you是存在于stdin流中,而不是在键盘缓冲区中。那么scanf()函数能不能完成这个任务?回答是:能!别忘了scanf()函数还有一个 %[] 格式控制符(如果对%[]不了解的请查看本文的上篇),请看下面的程序:

    #include<stdio.h>
    int main(void)
    {
    char str[50];
    scanf("%[^\n]",str);/*scanf("%s",string);不能接收空格符*/
    printf("%s\n",str);
    return 0;
    展开全文
  • java中的输入操作

    万次阅读 2018-03-10 11:36:20
    Java中输入一般是通过Scanner类来实现的:具体步骤如下:(1)创建Scanner对象,接受从控制台输入Scanner input=new Scanner(System.in);(2) 接受String类型String str=new input.next();(3)接受int类型int n=...
  • 输入

    2020-07-31 14:06:43
    在Python中,程序接收用户输入的数据的功能即是输入。 1.2 输入的语法 input("提示信息") 1.3 输入的特点 当程序执行到input,等待用户输入输入完成之后才继续向下执行。 在Python中,input接收用户输入后,...
  • 输入

    2016-03-29 09:51:03
    一次输入过程是这样的:当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,ci
  • 输入

    2019-02-04 13:53:57
    1.getchar/getche/getch getchar() —— 从键盘上读入一个字符后继续(回车后继续); ch=getchar() —— 从键盘上读入一个字符并储存到ch(回车后继续); getche() —— 从键盘上读入一... ) —— 按格式输入并赋值...
  • 输入

    2018-11-15 20:58:57
    python2版本中 ... 那么怎样才能让程序知道咱们刚刚输入的是什么呢?? 大家应该知道了,如果要完成ATM...在Python中,获取键盘输入的数据的方法是采用 raw_input 函数(至于什么是函数,咱们以后的章节中讲解),...
  • 输入

    2018-07-07 15:54:39
    输入1. python2版本中咱们在银行ATM机器前取钱时,肯定需要输入密码,对不?那么怎样才能让程序知道咱们刚刚输入的是什么呢??大家应该知道了,如果要完成ATM机取钱这件事情,需要先从键盘中输入一个数据,然后用一...
  • 单位埃Å怎么输入

    2019-09-30 04:27:14
    埃是一个很小的单位,一般用在晶体学、原子物理、超显微结构等微观世界,是其中常用的长度单位,埃等于10的-10次米,相当于1/10纳米,单位"埃",符号为:Å,如何在word和excel等常见文件中输入埃这个单位呢?...
  • 上标: ⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ⁿ º ˙ ㆒㆓㆔㆕㆖㆗㆘㆙㆚㆛㆜㆝㆞㆟ ᵃ ᵇ ᶜ ᵈ ᵉ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ⁿ ᵒ ᵖ ᵒʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᙆ ᴬ ᴮ ᒼ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ...
  • 特殊字符的如何输入

    2017-09-05 10:18:57
    特殊字符的如何输入 李国帅 qq9611153 像摄氏度℃这样的字符,utf8编码是0xa1e6,但是打字的时候很麻烦。 其实输入法中都会有输入方法,直接在右键软键盘,选择类型,常见的特殊字符都可以找到。 选择单位符号 输入9...
  • *{font-size:12px;font-family:宋体}td{width:180;cursor:hand;text-align:center}.n1{font-size:18px}.n2{font-size:18px;font-family:wingdings}.n3{font-size:18px;font-family:wingdings 2}.n
  • Java输入

    千次阅读 2019-03-21 16:57:36
    import java.util.Scanner; public class Test{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); int N=sc.nextInt();//输入整数 ...
  • vue监听input输入事件-oninput

    万次阅读 2017-05-25 19:14:06
    .vue文件其实是一个组件,关于它的说明我之前也写过一篇文章,地址: .vue文件,今天这篇文章要讲的是.vue文件中监听input的输入值变化事件。需求是这页面中,改变input的值,就调用一个事件,第一想到的是oninput。...
  • 使用Scanner来取得使用者的输入很方便,但是它以空白来区隔每一个输入字符串,在某些时候并不适用,因为使用者可能输入一个字符串,中间会包括空白字元,而您希望取得完整的字符串。 您可以使用BufferedReader...
  •  当输入的字母由a变为b时,对应的输出由Z编程Y,我们知道字符在内存中是以ASCII码值的形式存储的,也就是说,当输入的ASCII码值增加1,对应输出的ASCII码值在原有变化的基础上减少一,也就是说,每一次都比上一次的...
  • java 输入学习

    千次阅读 多人点赞 2019-08-09 21:57:19
    java输入学习①输入需要用到的类Scanner②声明对象③用户输入值给变量④char类型的输入输入需要用到的类Scanner 在开头打出import java.util.Scanner; 以便调用输入 ②声明对象 Scanner input = new Scanner...
  • #include<stdio.h> int main(void) { int a,b; scanf("%d%d",&a,&b); printf("%d + %d = %d\n",a,b,a+b); printf("%d - %d = %d\n",a,b,a-b); printf("%d * %d = %d\n",a,b,a*b);...printf(...

空空如也

1 2 3 4 5 ... 20
收藏数 7,068,703
精华内容 2,827,481
关键字:

输入