Ignore:
Timestamp:
Jan 31, 2024, 6:40:25 PM (20 months ago)
Author:
JiadaL <j82liang@…>
Branches:
master
Children:
496ffc17
Parents:
c75b30a (diff), e71b09a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/io/manipulatorsInput.cfa

    rc75b30a r32490deb  
    77// Created On       : Sat Jun  8 17:58:54 2019
    88// Last Modified By : Peter A. Buhr
    9 // Last Modified On : Wed Jan  3 11:15:04 2024
    10 // Update Count     : 103
     9// Last Modified On : Sun Jan 28 11:59:55 2024
     10// Update Count     : 133
    1111//
    1212
     
    5555        }
    5656        {
    57                 char s[] = "yyyyyyyyyyyyyyyyyyyy";
     57                char s[] = "yyyyyyyyyyyyyyyyyyyy";                                                                                                      // Input characters consumed:
    5858                const char sk_fmt[] = "%*[abc]";
    59                 scanf( "abc " ); scanf( sk_fmt ); for ( 5 ) scanf( "%*c" ); printf( "1 %s\n", s );
    60                 scanf( "%s", s );                                                               printf( "2 %s\n", s );
    61                 scanf( "%*s" );                                                                 printf( "3 %s\n", s );
    62                 scanf( "%8s", s );                                                              printf( "4 %s\n", s );
    63                 scanf( "%*8s" );                                                                printf( "5 %s\n", s );
    64 
    65                 scanf( "%[abc]", s );                                                   printf( "6 %s\n", s );
    66                 scanf( "%[^abc]", s );                                                  printf( "7 %s\n", s );
    67                 scanf( "%*[abc]" );                                                             printf( "8 %s\n", s );
    68                 scanf( "%*[^abc]" );                                                    printf( "9 %s\n", s );
    69                 scanf( "%8[abc]", s );                                                  printf( "10 %s\n", s );
    70                 scanf( "%8[^abc]", s );                                                 printf( "11 %s\n", s );
    71                 scanf( "%*8[abc]" );                                                    printf( "12 %s\n", s );
    72                 scanf( "%*8[^abc]" );                                                   printf( "13 %s\n", s );
     59                scanf( "abc " ); scanf( sk_fmt ); for ( 5 ) scanf( "%*c" ); printf( "1 %s\n", s );      // |abc |\ncccccb| \nxx\n|
     60                scanf( "%s", s );                                                               printf( "2 %s\n", s );                          // |abcxxx|
     61                scanf( "%*s" );                                                                 printf( "3 %s\n", s );                          // |\nabcyyy|
     62                scanf( "%8s", s );                                                              printf( "4 %s\n", s );                          // |\naaaaaaaa|
     63                scanf( "%*8s" );                                                                printf( "5 %s\n", s );                          // |xxxxxxxx|
     64
     65                scanf( "%[abc]", s );                                                   printf( "6 %s\n", s );                          // |aabbccbb|
     66                scanf( "%[^abc]", s );                                                  printf( "7 %s\n", s );                          // |dddwww|
     67                scanf( "%*[abc]" );                                                             printf( "8 %s\n", s );                          // |bbbbbbbb|
     68                scanf( "%*[^abc]" );                                                    printf( "9 %s\n", s );                          // |wwwwwwww|
     69                scanf( "%8[abc]", s );                                                  printf( "10 %s\n", s );                         // |aaaaaaaa|
     70                scanf( "%8[^abc]", s );                                                 printf( "11 %s\n", s );                         // |wwwwwwww|
     71                scanf( "%*8[abc]" );                                                    printf( "12 %s\n", s );                         // |aaaaaaaa|
     72                scanf( "%*8[^abc]" );                                                   printf( "13 %s\n", s );                         // |wwwwwwww|
     73                scanf( "\n" );                                                                  // must start next line                         // |\n|
    7374
    7475                int rc;
    7576                s[0] = 'q'; s[1] = '\0'; rc = 99;
    76                 rc = scanf( "%[abc]", s );                                              printf( "14 rc=%d, %s\n", rc, s );
     77                rc = scanf( "%[abc]", s );                                              printf( "14 rc=%d, %s\n", rc, s );      // ||
    7778                s[0] = 'q'; s[1] = '\0'; rc = 99;
    78                 rc = scanf( "%[^u]", s );                                               printf( "15 rc=%d, %s\n", rc, s );
    79                 scanf( "%*[u]\n" );
    80                 scanf( "%[^\n]\n", s );                                                 printf( "16 %s\n", s );
    81                 scanf( "%[^%%]%%\n", s );                                               printf( "17 %s\n", s );
    82 
    83                 scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace
    84                 scanf( "\"%[^\"]\"", s );                                               printf( "18 %s\n", s );
    85                 scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace
    86                 scanf( "'%[^']'", s );                                                  printf( "19 %s\n", s );
    87                 scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace
    88                 scanf( "{%[^}]}", s );                                                  printf( "20 %s\n", s );
    89                 scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace
    90                 scanf( "X%[^Y]Y", s );                                                  printf( "21 %s\n", s );
    91                 scanf( "\n" );                                                                  // must start next line
     79                rc = scanf( "%[^u]", s );                                               printf( "15 rc=%d, %s\n", rc, s );      // ||
     80                scanf( "%*[u]\n" );                                                                                                                                     // |uuuuu\n|
     81                scanf( "%[^\n]\n", s );                                                 printf( "16 %s\n", s );                         // |get this line\n|
     82                scanf( "%[^%%]%%\n", s );                                               printf( "17 %s\n", s );                         // |@# this line 1)-{}%\n|
     83                scanf( "%*[^%%]%%\n", s );                                              printf( "18 %s\n", s );                         // |@# this line 1)-{}%\n|
     84
     85                scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace                            // ||
     86                scanf( "\"%[^\"]\"", s );                                               printf( "19 %s\n", s );                         // |"abc"|
     87                scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace                            // |\n|
     88                scanf( "'%[^']'", s );                                                  printf( "20 %s\n", s );                         // |'abc  '|
     89                scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace                            // |\n|
     90                scanf( "{%[^}]}", s );                                                  printf( "21 %s\n", s );                         // |{ d d\n\nd }|
     91                scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace                            // |\n|
     92                scanf( "X%[^Y]Y", s );                                                  printf( "22 %s\n", s );                         // |X           ZC44%Y|
     93                scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace                            // |\n|
     94                scanf( "X%*[^Y]Y", s );                                                 printf( "23 %s\n", s );                         // |X           ZC44%Y|
     95                scanf( "\n" );                                                                  // must start next line                         // |\n|
     96
     97                char ch;
     98                scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace                            // |\n|
     99                scanf( "'%c'", &ch );                                                   printf( "24 %c\n", ch );                        // |x|
     100                scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace                            // |\n|
     101                scanf( "\"%c\"", &ch );                                                 printf( "25 %c\n", ch );                        // |x|
     102                scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace                            // |\n|
     103                scanf( "{%c}", &ch );                                                   printf( "26 %c\n", ch );                        // |x|
     104                scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace                            // |\n|
     105                scanf( "X%cY", &ch );                                                   printf( "27 %c\n", ch );                        // |x|
     106                scanf( "%*[ \f\n\r\t\v]" );                                             // ignore whitespace                            // |\n|
     107                scanf( "X%*cY", &ch );                                                  printf( "28 %c\n", ch );                        // |x|
     108                scanf( "\n" );                                                                  // must start next line                         // |\n|
    92109        }
    93110        {
     
    108125                sin | ignore( incl( "abc", wdi( sizeof(s), 8, s ) ) ); sout | "12" | s;
    109126                sin | ignore( excl( "abc", wdi( sizeof(s), 8, s ) ) ); sout | "13" | s;
     127                sin | nl;
    110128
    111129                s[0] = 'q'; s[1] = '\0';
     
    116134                sin | getline( wdi( sizeof(s), s ) );                   sout | "16" | s;
    117135                sin | getline( wdi( sizeof(s), s ), '%' ) | "\n"; sout | "17" | s;
    118 
    119                 sin | quoted( wdi( sizeof(s), s ) );                    sout | "18" | s;
    120                 sin | quoted( wdi( sizeof(s), s ), '\'' );              sout | "19" | s;
    121                 sin | quoted( wdi( sizeof(s), s ), '{', '}' );  sout | "20" | s;
    122                 sin | quoted( wdi( sizeof(s), s ), 'X', 'Y' );  sout | "21" | s;
    123         }
    124     // Keep harmonized with collections/string-istream-manip
     136                sin | ignore( getline( wdi( sizeof(s), s ), '%' ) ) | "\n"; sout | "18" | s;
     137
     138                sin | quoted( wdi( sizeof(s), s ) );                    sout | "19" | s;
     139                sin | quoted( wdi( sizeof(s), s ), '\'' );              sout | "20" | s;
     140                sin | quoted( wdi( sizeof(s), s ), '{', '}' );  sout | "21" | s;
     141                sin | quoted( wdi( sizeof(s), s ), 'X', 'Y' );  sout | "22" | s;
     142                sin | ignore( quoted( wdi( sizeof(s), s ), 'X', 'Y' ) ); sout | "23" | s;
     143
     144                char ch;
     145                sin | quoted( ch );                                                             sout | "24 " | ch;
     146                sin | quoted( ch, '\"' );                                               sout | "25 " | ch;
     147                sin | quoted( ch, '{', '}' );                                   sout | "26 " | ch;
     148                sin | quoted( ch, 'X', 'Y' );                                   sout | "27 " | ch;
     149                sin | ignore( quoted( ch, 'X', 'Y' ) );                 sout | "28 " | ch;
     150                sin | nl;
     151        }
     152        // Keep harmonized with collections/string-istream-manip
    125153        {
    126154                char c;
    127155                sin | c;                                                                                sout | c;
    128156                sin | ignore( c );                                                              sout | c;
     157                sin | nl;
     158
     159                char ca[3] = { 'a', 'b', 'c' };
     160                sin | wdi( sizeof(ca), ca[0] );                                 sout | ca[0] | ca[1] | ca[2];
     161                sin | ignore( wdi( sizeof(ca), ca[0] ) );               sout | ca[0] | ca[1] | ca[2];
     162                sin | nl;
    129163
    130164                signed char sc;
Note: See TracChangeset for help on using the changeset viewer.