いくつかの入出力の問題


  

          ,             ,      。          ,                        , cin                   。   cin                  ,                ,cin                      。


--------------- 

  :                、             !

     : 

scanf() Space  、Enter、Tab      ,          (            ),(          )//     getchar()  ; 

getchar() Enter    ,           ; 

      : 

scanf() Space、Enter、Tab      ,         (      )        。 

gets() Enter    (     ),    ,         ! 

  

  :          ,             ,          : 

  1:C             ,                   ! 

            fflush(stdin)。 

  2:             。 

       scanf("%[^/n]",string); 

          


    Turbo C2.0                 、     printf( )   
scanf(),                              。 
printf()           (  )   ; scanf()           
  (  )    。              。 
     、printf()   
    printf()          ,                    
  。              。printf()        : 
      printf("<      >", <   >); 
                   :         ,          
   ;             ,  "%"  ,            , 
          。 
                  ,                    
       ,       ","  ,        ,           
     。 
    1.        
    Turbo C2.0           : 
━━━━━━━━━━━━━━━━━━━━━━━━━━ 
                          
────────────────────────── 
    %d                       
    %u                       
    %f                  
    %s                  
    %c                   
    %p                   
    %e                       
    %x, %X                        
    %0                           
    %g                         
━━━━━━━━━━━━━━━━━━━━━━━━━━ 
      : 
    (1).    "%"               。 
       :  %3d       3    ,   3    。 
            %9.2f        9    ,       2,     6, 
                        ,   9    。 
            %8s       8       ,   8      。 
            、             ,          。 
     ,                   ,          ; 
                  ,               。 
      ,           0,          0。 
      :   %04d           4     ,      0      
 4 。 
                       ,              , 
             。 
      : %6.9s            6    9    。   9,    
 9            。 
    (2).    "%"          l,          。 
      :   %ld       long   
            %lf       double    
    (3).              ,   "%"         "-"    
        ,       。 
      :   %-7d      7       
            %-10s     10       
    2.          
━━━━━━━━━━━━━━━━━━━━━━━━━━ 
                                    
────────────────────────── 
     /n                      
     /f                         
     /r                      
     /t                   Tab  
     /xhh                     ASCII  16   , 
                            hh 1 2 16    
━━━━━━━━━━━━━━━━━━━━━━━━━━ 
          printf()  ,              ,        
 ,     Turbo C2.0       。 
     1 
     #include<stdio.h> 
     #include<string.h> 
     int main() 
     { 
          char c, s[20], *p; 
          int a=1234, *i; 
          float f=3.141592653589; 
          double x=0.12345678987654321; 
          p="How do you do"; 
          strcpy(s, "Hello, Comrade"); 
          *i=12; 
          c='/x41'; 
          printf("a=%d/n", a);     /*         a=1234*/ 
          printf("a=%6d/n", a);    /*    6     a=  1234*/ 
          printf("a=%06d/n", a);   /*    6     a=001234*/ 
          printf("a=%2d/n", a);    /*a  2 ,       a=1234*/ 
          printf("*i=%4d/n", *i);  /*  4      *i=  12*/ 
          printf("*i=%-4d/n", *i); /*     4      *i=12*/ 
          printf("i=%p/n", i);     /*    i=06E4*/ 
          printf("f=%f/n", f);     /*     f=3.141593*/ 
          printf("f=6.4f/n", f);   /*  6       4      
                                      f=3.1416*/ 
          printf("x=%lf/n", x);    /*      x=0.123457*/ 
          printf("x=%18.16lf/n", x);/*  18       16      
                                       x=0.1234567898765432*/ 
          printf("c=%c/n", c);     /*    c=A*/ 
          printf("c=%x/n", c);     /*     ASCII  c=41*/ 
          printf("s[]=%s/n", s);   /*       s[]=Hello, Comrade*/ 
          printf("s[]=%6.9s/n", s);/*    9       s[]=Hello, 
                                     Co*/ 
          printf("s=%p/n", s);     /*            s=FFBE*/ 
          printf("*p=%s/n", p);    /*        p=How do you do*/ 
          printf("p=%p/n", p);     /*      p=0194*/ 
          getch(); 
          retunr 0; 
     } 
                        。 
     1.      #include<stdio.h>           stdio.h,   
      ,                            。 
Turbo C2.0                         ,      
   "*.h" ,              #include<*.h> #include"*. h" 
          ,     。         ,           
 。 
     、scanf()   
    scanf()          ,         (  )        。 
      : 
      scanf("<      >", <   >); 
                     ; 
    1.       :        printf()             。 
    2.     :       scanf()                  
     。 
    3.      :          scanf()              
         。 
                    ,        。  printf()   
    ,      。          ","  。 
     2: 
     main() 
     { 
          int i, j; 
          printf("i, j=?/n"); 
          scanf("%d, %d", &i, &j); 
     } 

        scanf()         ,              ,    
         。  ","          , scanf()     。  
           ,                 。 
      : 
    (1).                ,                 
   ,     scanf()   ,           "&"   。 
     3 
      mian() 
     { 
          char *p, str[20]; 
          scanf("%s", p);          /*        */ 
          scanf("%s", str); 
          printf("%s/n", p);       /*        */ 
          printf("%s/n", str); 
     } 

    (2).            "%"               ,    
           。 
      3        10        p,     scanf()      
   
          scanf("%10s", p); 
                   10,  p       ,         
    scanf("%s", str)    11       。 
        scanf()         ,         : 
         scanf()              ,   : 
     main() 
     { 
          char c1, c2; 
          scanf("%c", &c1); 
          scanf("%c", &c2); 
          printf("c1 is %c, c2 is %c", c2/1, c2); 
     } 

         ,       A    (         ),    scanf 
("%c", &c1) ,    c1  "A",             ,        
scanf("%c", &c2) ,   c2       ,     AB   ,       
  : c1 is A, c2 is B。 
           ,               fflush()(        
           )。        : 
     #include<stdio.h> 
     main() 
     { 
          char c1, c2; 
          scanf("%c", &c1); 
          fflush(stdin); 
          scanf("%c", &c2); 
          printf("c1 is %c, c2 is %c", c1, c2); 
     } 

    1.1.2            
                                   ,   
          ,         ,        ,         
  。        。 
     、puts() gets()   
    1. puts()   
    puts()           (  )       ,       : 
     puts(s); 
      s      (            )。 
    puts()       printf("%s/n", s)  。 
     4: 
     main() 
     { 
          char s[20], *f;                 /*            */ 
          strcpy(s, "Hello! Turbo C2.0"); /*         */ 
          f="Thank you";                  /*         */ 
          puts(s); 
          puts(f); 
     } 

      : 
    (1). puts()         ,              。 
    (2).           puts()   。 : 
          puts("Hello, Turbo C2.0"); 

    2. gets()   
    gets()           (  )           ,      
        。      : 
    gets(s); 
      s      (            )。 
    gets(s)   scanf("%s", &s)  ,       ,   scanf("%s", &s) 
              ,                    , 
                 ,  gets()              
       。 
     5 
     main() 
     { 
          char s[20], *f; 
          printf("What's your name?/n"); 
          gets(s);                      /*             */ 
          puts(s);                      /*         */ 
          puts("How old are you?"); 
          gets(f); 
          puts(f); 
     } 
      : 
    (1). gets(s)      s     。       ,         
   ,        "Null pointer asignmemt"   。 
  
     、putchar()、getch()、getche() getchar()   
    1. putchar()   
    putchar()                ,       : 
     putchar(ch); 
      ch          。 
    putchar()        printf("%c", ch); 
     6: 
     #include<stdio.h> 
     main() 
     { 
          char c:             /*      */ 
          c='B';              /*       */ 
          putchar(c);         /*     */ 
          putchar('/x42');    /*    B*/ 
          putchar(0x42);      /*   ASCII      B*/ 
     } 
                                    。 
    2. getch()、getche() getchar()   
    (1) getch() getche()   
                     。      : 
     getch(); 
     getche(); 
          : getch()                 ,  getche() 
                 。 
     7: 
     #include<stdio.h> 
     main() 
     { 
          char c, ch; 
          c=getch();     /*                   c*/ 
          putchar(c);    /*     */ 
          ch=getche();   /*                    ch*/ 
          putchar(ch); 
     } 
               ,                       
   。 
     8: 
     #include<stdio.h> 
     main() 
     { 
          char c, s[20]; 
          printf("Name:"); 
          gets(s); 
          printf("Press any key to confinue..."); 
          getch();  /*       */ 
     } 
  
    (2) getchar()   
    getchar()              ,     。         
     : getchar()              ,            
           。                。 
    getchar()        : 
     getchar(); 
     9: 
     #include<stdio.h> 
     main() 
     { 
          char c; 
          c=getchar();   /*             */ 
          putchar(c);    /*          */ 
          getch();       /*      */ 
     } 

char *fgets(char *str, int num, FILE *fp)
     str            ,num           ,fp     .fgets         ,      
        num-1.  fgets                     .  fgets              . 




int fputs(char *str, file *fp)
     fputs str  fp.fputs puts      fputs           . 




int fgetc(FILE *fp)
     fgetc fp           . 




int fputc(int ch, file *fp)
      putc  ch  fp      . 




int fscanf(FILE *fp, char *format,...)
      scanf               ,         . 




int fprintf(FILE *fp, char *format,...)
      fprintf             .