#include <stdio.h>
#include <ctype.h>
#include <string.h>
// In case you need this -- not needed for this case
void discard_input( )
{
char c;
while ( ( c
= getchar ( ) ) != '\n ' && c
!= EOF
) ; }
void remove_trailing_newline( char * s)
{
char * ch
= s
+ strlen ( s
) - 1 ;
while ( ch != s ) {
if ( * ch == '\n ' ) {
* ch = 0 ;
break ;
}
-- ch;
}
return ;
}
int main( ) {
char name[ 30 ] ;
char number[ 12 ] ;
int flag, flag1, flag2, flag3;
int i;
do {
printf ( "\n Input name [1..30 char]: " ) ; fgets ( name
, 30 , stdin
) ; remove_trailing_newline( name ) ;
flag1 = flag = 1 ;
flag = 0 ;
printf ( "First letter of name should be an alphabet (A-Z or a-z), found: %s\n " , name
) ;
}
// impossible
flag1 = 0 ;
printf ( "Length of name should be between 1 and 30 characters\n " ) ; }
} while ( flag == 0 || flag1 == 0 ) ;
do {
printf ( "\n Input phone number[6..12 digits]: " ) ; fgets ( number
, 12 , stdin
) ; remove_trailing_newline( number ) ;
flag2 = flag3 = 1 ;
int len_phone
= strlen ( number
) ;
for ( i
= 0 ; i
< strlen ( number
) ; i
++ ) { flag2 = 0 ;
}
}
if ( flag2 == 0 ) {
printf ( "Phone numbers should only contain digits (0-9), found:'%s'\n " , number
) ; }
if ( len_phone < 6 || len_phone > 12 ) {
flag3 = 0 ;
printf ( "Length of phone numbers should be between 6 and 12 digits, found: %d\n " , len_phone
) ; }
} while ( flag2 == 0 || flag3 == 0 ) ;
printf ( "Name: '%s'\n " , name
) ; printf ( "Phone: '%s'\n " , number
) ; printf ( "New contact successfully added!\n " ) ; printf ( "Press Enter to continue..." ) ; return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxjdHlwZS5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CgovLyBJbiBjYXNlIHlvdSBuZWVkIHRoaXMgLS0gbm90IG5lZWRlZCBmb3IgdGhpcyBjYXNlCnZvaWQgZGlzY2FyZF9pbnB1dCgpCnsKCWNoYXIgYzsKCQoJd2hpbGUoICggYyA9IGdldGNoYXIoKSApICE9ICdcbicgJiYgYyAhPSBFT0YgKTsKfQoKdm9pZCByZW1vdmVfdHJhaWxpbmdfbmV3bGluZShjaGFyICogcykKewoJY2hhciAqIGNoID0gcyArIHN0cmxlbiggcyApIC0gMTsKCQoJd2hpbGUoIGNoICE9IHMgKSB7CgkJaWYgKCAqY2ggPT0gJ1xuJyApIHsKCQkJKmNoID0gMDsKCQkJYnJlYWs7CgkJfQoJCQoJCS0tY2g7Cgl9CgoJcmV0dXJuOwp9CgppbnQgbWFpbigpewogICAgY2hhciBuYW1lWzMwXTsKICAgIGNoYXIgbnVtYmVyWzEyXTsKICAgIGludCBmbGFnLCBmbGFnMSwgZmxhZzIsIGZsYWczOwogICAgaW50IGk7CgoKICAgIHByaW50ZigiQWRkIE5ldyBDb250YWN0XG4iKTsKICAgIGRvIHsKCiAgICBwcmludGYoIlxuSW5wdXQgbmFtZSBbMS4uMzAgY2hhcl06ICIpOwogICAgZmdldHMoIG5hbWUsIDMwLCBzdGRpbiApOwogICAgcmVtb3ZlX3RyYWlsaW5nX25ld2xpbmUoIG5hbWUgKTsKICAgIGZsYWcxID0gZmxhZyA9IDE7CgogICAgICAgIGlmICggIWlzYWxwaGEoIG5hbWVbIDAgXSApICkgewogICAgICAgICAgICBmbGFnID0gMDsKICAgICAgICAgICAgcHJpbnRmKCJGaXJzdCBsZXR0ZXIgb2YgbmFtZSBzaG91bGQgYmUgYW4gYWxwaGFiZXQgKEEtWiBvciBhLXopLCBmb3VuZDogJXNcbiIsIG5hbWUgKTsKCiAgICAgICAgfQoKCQkvLyBpbXBvc3NpYmxlCiAgICAgICAgaWYgKHN0cmxlbihuYW1lKSA+IDMwKSB7CiAgICAgICAgICAgIGZsYWcxID0gMDsKICAgICAgICAgICAgcHJpbnRmKCJMZW5ndGggb2YgbmFtZSBzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzMCBjaGFyYWN0ZXJzXG4iKTsKICAgICAgICB9CgogICAgfSB3aGlsZSAoZmxhZyA9PSAwIHx8IGZsYWcxID09IDApOwoKICAgIGRvIHsKICAgICAgICBwcmludGYoIlxuSW5wdXQgcGhvbmUgbnVtYmVyWzYuLjEyIGRpZ2l0c106ICIpOwogICAgICAgIGZnZXRzKCBudW1iZXIsIDEyLCBzdGRpbiApOwogICAgICAgIHJlbW92ZV90cmFpbGluZ19uZXdsaW5lKCBudW1iZXIgKTsKICAgICAgICBmbGFnMiA9IGZsYWczID0gMTsKICAgICAgICBpbnQgbGVuX3Bob25lID0gc3RybGVuKCBudW1iZXIgKTsKCiAgICAgICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbihudW1iZXIpOyBpKyspIHsKICAgICAgICAgICAgaWYgKCAhaXNkaWdpdCggbnVtYmVyWyBpIF0gKSApIHsKICAgICAgICAgICAgICAgIGZsYWcyID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoZmxhZzIgPT0gMCkgewogICAgICAgICAgICBwcmludGYoIlBob25lIG51bWJlcnMgc2hvdWxkIG9ubHkgY29udGFpbiBkaWdpdHMgKDAtOSksIGZvdW5kOiclcydcbiIsIG51bWJlcik7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICggbGVuX3Bob25lIDwgNiB8fCBsZW5fcGhvbmUgPiAxMikgewogICAgICAgICAgICBmbGFnMyA9IDA7IAogICAgICAgICAgICBwcmludGYoIkxlbmd0aCBvZiBwaG9uZSBudW1iZXJzIHNob3VsZCBiZSBiZXR3ZWVuIDYgYW5kIDEyIGRpZ2l0cywgZm91bmQ6ICVkXG4iLCBsZW5fcGhvbmUgKTsKICAgICAgICB9CgogICAgfSB3aGlsZSAoZmxhZzIgPT0gMCB8fCBmbGFnMyA9PSAwKTsKCiAgICBwcmludGYoIlxuIik7CglwcmludGYoICJOYW1lOiAnJXMnXG4iLCBuYW1lICk7CglwcmludGYoICJQaG9uZTogJyVzJ1xuIiwgbnVtYmVyICk7CiAgICBwcmludGYoIk5ldyBjb250YWN0IHN1Y2Nlc3NmdWxseSBhZGRlZCFcbiIpOwogICAgcHJpbnRmKCJQcmVzcyBFbnRlciB0byBjb250aW51ZS4uLiIpOwogICAgZ2V0Y2hhcigpOwogICAgcmV0dXJuIDA7Cn0K