精华内容
下载资源
问答
  • c语言输入输出

    千次阅读 2014-11-17 22:01:18
    http://blog.csdn.net/pipisorry/article/details/41219551C语言基本输入输出C语言字符串读取数据sscanfsscanf() - 从一个字符串中读进与指定格式相符的数据。swscanf()- 用于处理宽字符字符串,和sscanf功能相同...

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

    C语言基本输入输出

    标准输入scanf

     scanf("%s", a);

    C语言字符串读取数据sscanf

    sscanf() - 从一个字符串中读进与指定格式相符的数据。
    swscanf()- 用于处理宽字符字符串,和sscanf功能相同。

    c++用代码如何实现向输入缓冲区写入数据

    未解决

    C语言基本输出printf()

    printf函数的返回值

    http://www.360doc.com/content/11/1105/23/1317564_162120554.shtml

    关于printf()函数的返回值问题

    C语言字符串输出sprintf()

    将各种类型的数据构造成字符串
    sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。
    sprintf 是个变参函数,定义如下:
      int sprintf( char *buffer, const char *format [, argument] ... );
      除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数格式化字符串上。

    [sprintf()的用法]

    皮皮blog



    非格式化输入输出puts()\gets()函数

    可以由上面讲述的标准格式化输入输出函数代替, 但这些函数编译后代码少, 相对占用内存也小, 从而提高了速度, 同时使用也比较方便。

    1. puts()函数

        puts()函数用来向标准输出设备(屏幕)写字符串并换行,

    调用格式为:    puts(s);

        其中s为字符串变量(字符串数组名或字符串指针)。

        puts()函数的作用与语printf("%s\n", s)相同。

    1. main()  {  
    2.   
    3.      char s[20], *f;   
    4.   
    5.      strcpy(s, "Hello world!"); /*字符串数组变量赋值*/  
    6.   
    7.      f="Thank you";                     /*字符串指针变量赋值*/  
    8.   
    9.      puts(s);  
    10.   
    11.      puts(f);  
    12.   
    13. }  

    说明:

        (1). puts()函数只能输出字符串, 不能输出数值或进行格式变换。

        (2). 可以将字符串直接写入puts()函数中。如:puts("Hello, Turbo C2.0");

    2. gets()函数

        gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符不属于这个字符串。

    调用格式为:    gets(s);

        其中s为字符串变量(字符串数组名或字符串指针)。

        gets(s)函数与scanf("%s", &s)相似, 但不完全相同, 使用scanf("%s", &s)函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束,

    空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符串直到回车为止。

    1.     main(){  
    2.   
    3.          char s[20], *f;  
    4.   
    5.          printf("input sth\n");  
    6.   
    7.          gets(s);                      /*等待输入字符串直到回车结束*/  
    8.   
    9.          puts(s);                      /*将输入的字符串输出*/  
    10.   
    11.          puts("input sth\n");  
    12.   
    13.          gets(f);  
    14.   
    15.          puts(f);  
    16.   

    [puts()和gets()函数 用法 ()]

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

    问题:
     scanf("%s", a);
    运行输入hello world  
    回车
    则输入到a的只是空格之前的部分,怎样把空格之后的部分也输出?
    1. scanf( "%[^\n]", str );
    #include <stdio.h> int main(){ char str[50]; 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); 使用此方法可以在字符处理时吃掉多余的回车。


    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比较安全

    皮皮blog



    c语言文件读取和输入输出

    C语言文件读取fscanf()

    函数名: fscanf

    简述:C语言中基本的文件操作

    功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。

    用法:

    1
    int fscanf(FILE*stream,constchar*format,[argument...]);
    FILE *stream:文件指针;
    char *format:格式字符串;
    [argument...]:输入列表。
    返回值为输入数据个数
    例如:
    1
    2
    3
    4
    5
    FILE*fp;
    chara[10];
    intb;
    doublec;
    fscanf(fp,"%s%d%lf",a,&b,&c)
    返回值:整型,成功读入的参数的个数

    格式字符说明
    常用基本参数对照:
           %d:读入一个十进制整数.
    %i :读入十进制,八进制,十六进制整数,与%d类似,但是在编译时通过数据前置或后置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d时会被算作31,但是使用%i时会算作25.
    %u:读入一个无符号十进制整数.
    %f %F %g %G : 用来输入实数,可以用小数形式或指数形式输入.
    %x %X: 读入十六进制整数.
    %o': 读入八进制整数.
    %s : 读入一个字符串,遇空字符‘\0'结束。
    %c : 读入一个字符。无法读入空值。空格可以被读入。
    附加格式说明字符表修饰符说明
    L/l 长度修饰符 输入"长"数据
    h 长度修饰符 输入"短"数据
    示例说明
    如果要求从标准输入中输入一串字符串和一个整型数,那么参数“%s%d”表示什么呢?默认情况下,在终端上(这里假设程序为控制台应用程序)输入第一个参数的值的时候敲下回车,则在第二行输入的为第二个参数值,采用这种输入方法那么格式字符的形式就无关紧要了。
    这里要特殊说明的是如果参数在同一行给出,那么格式字符的参数与终端的输入会有什么关系。举个例子:如果格式字符为“%s+%d”,那么参数的输入就应该为 string + integer。

    http://baike.baidu.com/view/656694.htm

    http://blog.csdn.net/jhg1204/article/details/7932187
    c语言中所有文件操作函数详解:http://www.2cto.com/kf/201207/143344.html
    皮皮blog


    C语言控制台字体颜色设置

    一、设置字体颜色:
    1. 0 = 黑色       8 = 灰色
        1 = 蓝色       9 = 淡蓝色
        2 = 绿色       A = 淡绿色
        3 = 浅绿色     B = 淡浅绿色
        4 = 红色       C = 淡红色
        5 = 紫色       D = 淡紫色
        6 = 黄色       E = 淡黄色
        7 = 白色       F = 亮白色 
    #include <stdlib.h>
    system("color 2");system("color F");
    2.
    VC中要调用windows API来改变字体颜色。
    #include  <windows.h> 
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
    printf("Hello\n");
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED);
    printf("Hello\n");

    其中FOREGROUND颜色只有四种:GREEN,BLUE,RED,INTENSITY(加强)

    WinCon.h:
    #define FOREGROUND_BLUE      0x0001 // text color contains blue.
    #define FOREGROUND_GREEN     0x0002 // text color contains green.
    #define FOREGROUND_RED       0x0004 // text color contains red.
    #define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
    #define BACKGROUND_BLUE      0x0010 // background color contains blue.
    #define BACKGROUND_GREEN     0x0020 // background color contains green.
    #define BACKGROUND_RED       0x0040 // background color contains red.
    #define BACKGROUND_INTENSITY 0x0080

    其他颜色都是基于红绿蓝三原色来调和而成:
    红色+绿色=黄色 
    绿色+蓝色=青色 
    红色+蓝色=品红 

    红色+绿色+蓝色=白色

    from:http://blog.csdn.net/pipisorry/article/details/41219551

    ref:cin、cin.get()、cin.getline()、getline()、gets()函数的用法


    展开全文
  • C语言输入输出格式符

    2020-08-22 21:59:29
    C语言输入输出格式符 printf函数(格式输出函数) 1.一般格式 printf(格式控制,输出表列) 例如:printf(“i=%d,ch=%c\n”,i,ch); 说明: (1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两...

    C语言输入输出格式符

    printf函数(格式输出函数)
    1.一般格式

    printf(格式控制,输出表列)

    例如:printf(“i=%d,ch=%c\n”,i,ch);

    说明:

    (1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两种信息:

    ①格式说明:由“%”和格式字符组成,它的作用是将输出的数据转换为指定的格式输出。

    ②普通字符,即需要原样输出的字符。

    (2)“输出表列”是需要输出的一些数据,可以是表达式

    (3)printf函数的一般形式可以表示为

    printf(参数1,参数2,……,参数n)

    功能是将参数2~参数n按参数1给定的格式输出

    2.格式字符(9种)

    (1)d(或i)格式符。用来输出十进制整数,有以下几种用法:

    ①%d,按整型数据的实际长度输出。

    ②%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

    ③%ld(%mld 也可),输出长整型数据。

    例如:long a=123456;

    printf("%ld",a);

    (2)o格式符,以八进制数形式输出整数。格式:%o,%mo,%lo,%mlo都可。

    (3)x(或X)格式符,以十六进制数形式输出整数。格式:%x,%mx,%lx,%mlx都可。

    (4)u格式符,用来输出unsigned型数据,即无符号数,以十进制数形式输出。格式:%u,%mu,%lu都可。

    (5)c格式符,用来输出一个字符。格式:%c,%mc都可。

    (6)s格式符,用来输出一个字符串。格式:%s,%ms,%-ms,%m.ns,%-m.ns都可。

    (7)f格式符,用来输出实数(包括单、双精度),以小数形式输出。格式:%f,%m.nf,%-m.nf都可。

    注意:单精度实数的有效位数一般为7位,双精度为16位。

    (8)e(或E)格式符,以指数形式输出实数。格式:%e,%m.ne,%-m.ne都可。

    (9)g(或G)格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种)。

    3.说明

    (1)除了X、E、G(用大写字母表示)外,其他格式字符必须用小写字母;

    (2)“格式控制”字符串内可以包含转义字符;

    (3)如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示,如:

    printf("%f%%",1.0/3);

    (4)格式字符表参见下表

    表4.1 printf格式字符

    格式字符 说 明
    d,i 以带符号的十进制形式输出整数(正数不输出符号)
    o 以八进制无符号形式输出整数(不输出前导符0)
    x,X 以十六进制无符号形式输出整数(不输出前导符0x),用x则输出十六进制数的a~f时以小写形式输出,用X时,则以大写字母输出
    u 以无符号十进制形式输出整数
    c 以字符形式输出,只输出一个字符
    s 输出字符串
    f 以小数形式输出单、双精度数,隐含输出6位小数
    e,E 以指数形式输出实数
    g,G 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0

    表4.2 printf的附加格式说明字符

    字符
    说明

    字母l
    用于长整型整数,可加在格式符d、o、x、u前面

    m(代表一个正整数)
    数据最小宽度

    n(代表一个正整数)
    对实数,表示输出n位小数;对字符串,表示截取的字符个数

    (二)
    c语言不提供输入输出语句,输入输出操作是由c的库函数完成。但要包含头文件stdio.h。
    putchar( ) 向终端输出一个字符 printf( )的格式字符:

    1. ① d格式符 用来输出十进制整数 %d 按整型数据的实际长度输出 %md
      使输出长度为m,如果数据长度小于m,则左补空格,如果大于m,则输出实际长度 %ld 输出长整型数据
    2. ② o格式符 以八进制形式输出整数
    3. ③ x格式符 以十六进制形式输出整数
    4. ④ u格式符 用来输出unsigned型数据,以十进制形式输出
    5. ⑤ c格式符 用来输出一个字符
    6. ⑥ s格式符 输出一个字符串 %s 输出实际长度字符串 %ms 输出的串占m列,如果串长度小于m,左补空格,如果大于m,实际输出
      %-ms输出的串占m列,如果串长度小于m,右补空格, %m.ns 输出占m列,但只取字符串中左端n个字符并靠右对齐 %-m.ns
      m、n含义同上,靠左对齐,如果n>m,则m自动取n值
    7. ⑦ f格式符 以小数形式输出实数 %f 整数部分全部输出,小数部分输出6位 %m.nf
      输出数据共占m列,其中有n位小数。如果数值长度小于m,左补空格 %-m.nf 同上,右补空格
    8. ⑧ e格式符 以指数形式输出实数 %e 系统指定6位小数,5位指数(e+002 )
    9. ⑨ g格式符 输出实数,根据数值大小,自动选f格式或e格式

    3.数据输入 getchar( ) 从终端输入一个字符 scanf( 格式控制,地址列表) 标准C scanf中不使用%u,对于unsigned型数据,以%d或%o或%x输入。%后的*,用来跳过它相应的数据。输入数据时不能规定精度如scanf( “%7.2f”, &a );是不合法的。

    展开全文
  • C语言输入输出语句

    万次阅读 2018-04-27 13:54:03
    一:控制台输入输出 (1)字符数据的输入/输出 字符输出 putchar(ch); 字符输入 getchar(ch); (2)格式化输入/输出 格式输出 printf(“格式控制字符串”,输出列表); 格式输入 scanf(“格式控制字符...

    一:控制台输入输出
    (1)字符数据的输入/输出
    字符输出 putchar(int c);
    字符输入 getchar(void);
    (2)格式化输入/输出
    格式输出 printf(“格式控制字符串”,输出列表);
    格式输入 scanf(“格式控制字符串”,地址列表);
    (3)字符串的输入/输出
    字符串输出 puts(const char *str);
    字符串输入 gets(char *str);
    scanf不能接受空格、制表符Tab、回车等;对末尾回车符的处理:把回车符保留在缓存中。
    gets能够接受空格、制表符Tab和回车等;对末尾回车符的处理:接收回车,但把回车替换为\0。
    二:文件的读写
    (1)读写一个字符
    字符写函数 fputc(c,fp);
    字符读函数 fgetc(fp);
    (2)块读写
    二进制写函数 fwrite(buffer,size,count,fp);
    二进制读函数 fread(buffer,size,count,fp);
    格式化写函数 fprintf(文件指针,格式字符串,输出项表列);
    格式化读函数 fscanf(文件指针,格式字符串,地址参数列表);
    (3)其他读写函数
    磁盘文件写函数 putw(10,fp);
    磁盘文件读函数 getw(fp);
    文件字符串写函数 fputs(字符串,文件指针);
    文件字符串读函数 fgets(字符串数组名,n,文件指针);

    展开全文
  • c语言输入输出格式

    万次阅读 多人点赞 2018-06-11 20:39:58
    //最近被某题的输入输出卡了。。。转一波随时看。。。菜哭&lt;span style="font-family:KaiTi_GB2312;font-size:18px;"&gt;本小节介绍的是向标准输出设备显示器输出数据的语句。在C语言中,所有...

    //最近被某题的输入输出卡了。。。转一波随时看。。。菜哭

    <span style="font-family:KaiTi_GB2312;font-size:18px;">本小节介绍的是向标准输出设备显示器输出数据的语句。在C语言中,所有的数据输入/输出都是由库函数完成的。因此都是函数语句。本小节先介绍printf函数和putchar函数。printf函数printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。  
      
    一、printf函数调用的一般形式  
      
    printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为: printf(“格式控制字符串”,输出表列)其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如“%d”表示按十进制整型输出,“%ld”表示按十进制长整型输出,“%c”表示按字符型输出等。后面将专门给予讨论。  
      
    非格式字符串在输出时原样照印,在显示中起提示作用。输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。  
    void main()  
    {  
    int a=88,b=89;  
    printf("%d %d\n",a,b);  
    printf("%d,%d\n",a,b);  
    printf("%c,%c\n",a,b);  
    printf("a=%d,b=%d",a,b);  
    }  
    a<--8,b<--89  
      
    printf("%d %d\n",a,b);  
    printf("%d,%d\n",a,b);  
    printf("%c,%c\n",a,b);  
    printf("a=%d,b=%d",a,b);  
    本例中四次输出了a,b的值,但由于格式控制串不同,输出的结果也不相同。第四行的输出语句格式控制串中,两格式串%d 之间加了一个空格(非格式字符),所以输出的a,b值之间有一个空格。第五行的printf语句格式控制串中加入的是非格式字符逗号,因此输出的a,b值之间加了一个逗号。第六行的格式串要求按字符型输出 a,b值。第七行中为了提示输出结果又增加了非格式字符串。  
      
    二、格式字符串  
      
    在Turbo C中格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型其中方括号[]中的项为可选项。各项的意义介绍如下:  
    1.类型类型字符用以表示输出数据的类型,其格式符和意义下表所示:  
    表示输出类型的格式字符       格式字符意义  
    d                 以十进制形式输出带符号整数(正数不输出符号)  
    o                 以八进制形式输出无符号整数(不输出前缀O)  
    x                 以十六进制形式输出无符号整数(不输出前缀OX)  
    u                 以十进制形式输出无符号整数  
    f                 以小数形式输出单、双精度实数  
    e                 以指数形式输出单、双精度实数  
    g                 以%f%e中较短的输出宽度输出单、双精度实数  
    c                 输出单个字符  
    s                 输出字符串  
    2.标志  
    标志字符为-、+、#、空格四种,其意义下表所示:  
    标志格式字符      标 志 意 义  
    -           结果左对齐,右边填空格  
    +          输出符号(正号或负号)  
    空格                           输出值为正时冠以空格,为负时冠以负号  
    #          对c,s,d,u类无影响;对o类, 在输出时加前缀0;  
                                    对x类,在输出时加前缀0x;对e,g,f 类当结果有小数时才给出小数点  
    3.输出最小宽度  
    用十进制整数来表示输出的最少位数。 若实际位数多于定义的宽度,则按实际位数输出, 若实际位数少于定义的宽度则补以空格或0。  
    4.精度  
    精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。  
    5.长度  
    长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。  
    void main(){  
    int a=15;  
    float b=138.3576278;  
    double c=35648256.3645687;  
    char d='p';  
    printf("a=%d,],%o,%x\n",a,a,a,a);  
    printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);  
    printf("c=%lf,%f,%8.4lf\n",c,c,c);  
    printf("d=%c,�\n",d,d);  
    } a<--15  
    b<--138.3576278  
    c<--35648256.3645687  
    d<--'p' main()  
    {  
    int a=29;  
    float b=1243.2341;  
    double c=24212345.24232;  
    char c='h'  
    printf("a=%d,],%o,%x\n",a,a,a,a);  
    printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);  
    printf("c=%lf,%f,%8.4lf\n",c,c,c);  
    printf("d=%c,�\n",d,d);  
    }  
    本例第七行中以四种格式输出整型变量a的值,其中“] ”要求输出宽度为5,而a值为15只有两位故补三个空格。第八行中以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。“%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。第九行输出双精度实数,“%8.4lf ”由于指定精度为4位故截去了超过4位的部分。第十行输出字符量d,其中“� ”指定输出宽度为8故在输出字符p之前补加7个空格。  
      
    使用printf函数时还要注意一个问题, 那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左。Turbo C是按从右到左进行的。如把例2.13改写如下述形式:  
    void main(){  
    int i=8;  
    printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);  
    } i<--8  
      
    这个程序与例2.13相比只是把多个printf语句改一个printf 语句输出。但从结果可以看出是不同的。为什么结果会不同呢?就是因为printf函数对输出表中各量求值的顺序是自右至左进行的。在式中,先对最后一项“-i--”求值,结果为-8,然后i自减1后为7。再对“-i++”项求值得-7,然后i自增1后为8。再对“i--”项求值得8,然后i再自减1后为7。再求“i++”项得7,然后I再自增1后为8。再求“--i”项,i先自减1后输出,输出值为7。最后才求输出表列中的第一项“++i”,此时i自增1后输出8。但是必须注意,求值顺序虽是自右至左,但是输出顺序还是从左至右,因此得到的结果是上述输出结果。  
      
    字符输出函数  
      
    putchar 函数  
      
    putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。其一般形式为: putchar(字符变量) 例如:  
    putchar('A'); 输出大写字母A  
    putchar(x); 输出字符变量x的值  
    putchar('\n'); 换行 对控制字符则执行控制功能,不在屏幕上显示。 使用本函数前必须要用文件包含命令:  
    #include<stdio.h>  
    #include <stdio.h>  
    void main(){  
    char a='B',b='o',c='k';  
    putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');  
    putchar(a);putchar(b);  
    putchar('\n');  
    putchar(b);putchar(c);  
    }  
      
    数据输入语句  
      
    C语言的数据输入也是由函数语句完成的。 本节介绍从标准输入设备—键盘上输入数据的函数scanf和getchar。 scanf函数 scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。  
      
    一、scanf函数的一般形式  
      
    scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件。scanf函数的一般形式为: scanf(“格式控制字符串”,地址表列); 其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。例如,&a,&b分别表示变量a和变量b 的地址。这个地址就是编译系统在内存中给a,b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。变量的地址和变量值的关系如下: &a--->a567 a为变量名,567是变量的值,&a是变量a的地址。在赋值表达式中给变量赋值,如: a=567 在赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。  
    void main(){  
    int a,b,c;  
    printf("input a,b,c\n");  
    scanf("%d%d%d",&a,&b,&c);  
    printf("a=%d,b=%d,c=%d",a,b,c);  
    }  
    注意&的用法!  
    在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕等待用户输入。用户输入7、8、9后按下回车键,此时,系统又将返回TC屏幕。在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔,因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。  
    如: 7 8 9  
    或  
    7  
    8  
    9  
      
    格式字符串  
      
    格式字符串的一般形式为: %[*][输入数据宽度][长度]类型 其中有方括号[]的项为任选项。各项的意义如下:  
    1.类型  
    表示输入数据的类型,其格式符和意义下表所示。  
    格式    字符意义  
    d     输入十进制整数  
    o     输入八进制整数  
    x     输入十六进制整数  
    u     输入无符号十进制整数  
    f或e    输入实型数(用小数形式或指数形式)  
    c     输入单个字符  
    s     输入字符串  
    2.“*”符  
    用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。 如 scanf("%d %*d %d",&a,&b);当输入为:1 2 3 时,把1赋予a,2被跳过,3赋予b。  
    3.宽度  
    用十进制整数指定输入的宽度(即字符数)。例如: scanf("]",&a);  
    输入:  
    12345678  
    只把12345赋予变量a,其余部分被截去。又如: scanf("MM",&a,&b);  
    输入:  
    12345678将把1234赋予a,而把5678赋予b。  
    4.长度  
    长度格式符为l和h,l表示输入长整型数据(如%ld) 和双精度浮点数(如%lf)。h表示输入短整型数据。  
    使用scanf函数还必须注意以下几点:  
    a. scanf函数中没有精度控制,如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。  
    b. scanf中要求给出变量地址,如给出变量名则会出错。如 scanf("%d",a);是非法的,应改为scnaf("%d",&a);才是合法的。  
    c. 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。  
    d. 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。例如:  
    scanf("%c%c%c",&a,&b,&c);  
    输入为:  
    d e f  
    则把'd'赋予a, 'f'赋予b,'e'赋予c。只有当输入为:  
    def  
    时,才能把'd'赋于a,'e'赋予b,'f'赋予c。 如果在格式控制中加入空格作为间隔,如 scanf ("%c %c %c",&a,&b,&c);则输入时各数据之间可加空格。  
    void main(){  
    char a,b;  
    printf("input character a,b\n");  
    scanf("%c%c",&a,&b);  
    printf("%c%c\n",a,b);  
    }  
    scanf("'C14F14%c%c",&a,&b);  
    printf("%c%c\n",a,b); 由于scanf函数"%c%c"中没有空格,输入M N,结果输出只有M。  
    而输入改为MN时则可输出MN两字符,见下面的输入运行情况: input character a,b  
    MN  
    MN  
    void main(){  
    char a,b;  
    printf("input character a,b\n");  
    scanf("%c %c",&a,&b);  
    printf("\n%c%c\n",a,b);  
    }  
    scanf("%c %c",&a,&b); 本例表示scanf格式控制串"%c %c"之间有空格时, 输入的数据之间可以有空格间隔。e. 如果格式控制串中有非格式字符则输入时也要输入该非格式字符。  
    例如:  
    scanf("%d,%d,%d",&a,&b,&c); 其中用非格式符“ , ”作间隔符,故输入时应为: 5,6,7  
    又如: scanf("a=%d,b=%d,c=%d",&a,&b,&c);  
    则输入应为  
    a=5,b=6,c=7g. 如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确。  
    void main(){  
    int a;  
    printf("input a number\n");  
    scanf("%d",&a);  
    printf("%ld",a);  
    }  
    由于输入数据类型为整型, 而输出语句的格式串中说明为长整型,因此输出结果和输入数据不符。如改动程序如下:  
    void main(){  
    long a;  
    printf("input a long integer\n");  
    scanf("%ld",&a);  
    printf("%ld",a);  
    }  
    运行结果为:  
    input a long integer  
    1234567890  
    1234567890 当输入数据改为长整型后,输入输出数据相等。  
      
    键盘输入函数  
    getchar函数getchar函数的功能是从键盘上输入一个字符。其一般形式为: getchar(); 通常把输入的字符赋予一个字符变量,构成赋值语句,如:  
    char c;  
    c=getchar();#include<stdio.h>  
    void main(){  
    char c;  
    printf("input a character\n");  
    c=getchar();  
    putchar(c);  
    }  
    使用getchar函数还应注意几个问题:  
    1.getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。  
    2.使用本函数前必须包含文件“stdio.h”。  
    3.在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。  
    void main(){  
    char a,b,c;  
    printf("input character a,b,c\n");  
    scanf("%c %c %c",&a,&b,&c);  
    printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);  
    }  
    输入三个小写字母  
    输出其ASCII码和对应的大写字母。  
    void main(){  
    int a;  
    long b;  
    float f;  
    double d;  
    char c;  
    printf("%d,%d,%d,%d,%d",sizeof(a),sizeof(b),sizeof(f)  
    ,sizeof(d),sizeof(c));  
    }  
    输出各种数据类型的字节长度。  
    </span>  
    
    

    展开全文
  • c语言输入输出函数

    千次阅读 多人点赞 2013-08-26 17:58:16
    上学年学习c语言的时候比较匆忙,没好好吸收。 现在有时间好好复习下。 本文就c语言常见输入...C语言输入输出函数  C/C++学习笔记1 - 深入了解scanf()/getchar()和gets()等函数 -。常见输入输出
  • C语言输入输出流和缓冲区的深入理解

    万次阅读 多人点赞 2015-10-06 10:08:17
    导读:对C语言输入输出流和缓冲区的深入理解,C语言缓冲区(缓存)详解,缓冲区又称为缓存,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,缓冲区根据其对应的是输入设备还是输出设备,分为...
  • C语言输入输出格式

    千次阅读 2019-12-18 23:12:21
    另:在用%f输出时要注意数据本身能提供的有效数字,如float型数据存储单元只能保证6位有效数字。double型数据能保证15位有效数字。 3.对齐方式 输出的数据向左对齐,用%-m.nf 输出的数据向右对齐,用%m.nf 例...
  • C:C语言输入输出函数总结

    千次阅读 2019-08-05 18:24:09
    文章目录(一) 格式化输入输出函数(1)scanf( )格式化输入函数(2)printf( )格式输出函数(二)单字符输入、输出函数(1)单字符输入函数getchar( )(2)...在C语言中,输入输出函数有着相当重要的地位,它是我们...
  • c语言输入输出优化

    千次阅读 2015-12-08 20:38:37
    输入输出数据量很大时,应尽量用scanf和printf函数。如果时间效率还不够高,应逐字符输入输出,就像下面的readint和writeint函数。#include //为了使用isdigit宏 inline int readint() { char c = getchar(); ...
  • C语言输入输出方法的区别和总结

    千次阅读 2019-04-30 22:01:12
    C语言有很多的输入输出方法,它们在C语言标准库stdio.h中总结下常用方法的区别 常用方法如下: 输入方法 输出方法 int scanf(const char *format, ...)从标准输入 stdin 读取格式化输入。 int printf(const ...
  • c语言输入输出函数printf与scanf的用法格式,格式化规则例如:%5.4f等类似问题的说明  Turbo C2.0 标准库提供了两个控制台格式化输入、输出函数printf( ) 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同...
  • C语言输入输出函数总结

    千次阅读 2011-04-20 19:18:00
    <br />在C语言中,输入输出函数有着相当重要的地位,它是我们的程序与用户交互的唯一途径,现在我就将C语言中比较常见的几个输入输出函数介绍给大家,以下这些讲解都是针对VC调试平台。 (一) 格式化...
  • 【C】C语言输入输出缓冲区

    万次阅读 多人点赞 2016-06-19 18:57:33
    其实原因很简单,就是C语言输入输出缓冲在作怪。 2.缓冲区(行缓冲与全缓冲) 一般情况下,由键盘输入的字符并没有直接送入程序,而是被存储在一个缓冲区当中。缓冲又分为两种,行缓冲和完全缓冲。对于完全...
  • 为什么scanf总是报错说不安全,得scanf_s才行。 This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
  • C语言输入输出(Input/Output)

    万次阅读 2018-05-13 08:58:49
    1.控制台 scanf(); printf(); 2.字符串变量 sscanf() sprintf() 3.文件 fscanf() fprintf() 4.管道
  • 输出时小数尾部没有多余的0,可以用下面这种格式: double x; x = 1.33; printf("%g", x);
  • 记录一次尴尬的C语言输入输出矩阵

    千次阅读 2018-01-15 14:28:48
    需求:输入三维矩阵,并输出第一行那和第三行之和 #include void func(int a[3][3]) { int i,j; int sum=0;  for(i=0;i  {  if(i!=1)  for(j=0;j  sum+=a[i][j];  }  printf("结果为%d",sum); ...
  • C语言 输入输出1(8进制与16进制)

    千次阅读 2018-10-13 18:09:21
    编写程序,输入一个正整数n,输出n的8进制与16进制形式。 输入 整数n。 输出 n的8进制与16进制形式(2个数据之间用1个空格分开),输出后换行。 样例输入 100 样例输出 0144 0x64 提示 来源 hnldyhy #include&lt...
  • 使用C++输入输出16进制数、8进制数 #include <iostream> #include<cstdio> using namespace std; int main() { int a, b; cin >> hex >> a >> b;//输入 16进制 ,输入8进制 则把...
  • c语言输入输出多个字符串

    万次阅读 2015-01-15 14:01:30
    #include #include int main() { char str[50][50]; char *ps[50];... scanf()函数接受输入以后,回车被保存在输入流中了, 你在scanf()后面加一个getchar()就好了。 这样会吃 掉多余的回车符,后面的g
  • C语言输入输出的重定向

    千次阅读 2007-06-24 16:43:00
    许多操作系统,包括MS-DOS和UNIX,可以对输入输出进行重定向。为了理解这个机制,首先考虑下面这个UNIX命令:ls这个命令在屏幕上显示文件的目录列表(MS-DOS中的对应命令是DIR)。现在考了下面这个命令:ls>tmp符号>...
  • C语言输入输出重定向到文件与管道

    千次阅读 2012-05-31 23:43:41
    输出定向到文件 testout.c: #include int main() { printf( "xxoo\n" ); return ( 0 ); } 生成testout.exe。 cmd下输入: testout.exe>D:\\out.txt 则123.txt中被写入了"xxoo"。若使用>>则表示“追加”,...
  • /* ...*All rights reserved. *文件名称:main.c *作 者:吴东锋 *完成日期:2016年5月21日 ...#include //标准输入输出函数头文件 #include //头文件定义了一些宏和通用工具函数 int main()//主函数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,275
精华内容 13,710
关键字:

c语言输入输出

c语言 订阅