c primer plus 11 复习题

9、

#include <stdio.h>

char *s_gets(char *st, int n);

int main(void)
{
    char st1[100];
    
    s_gets(st1, 100);
    
    puts(st1);
    
    return 0;
}

char *s_gets(char *st, int n)
{
    char *ret_val;
    
    ret_val = fgets(st, n, stdin);
    
    if(ret_val)
    {
        while(*st != '
' && *st != '')
            st++;
        
        if(*st == '
')
            *st = '';
        else
            while(getchar() != '
')
                continue;
    }
    return ret_val;
}

10、

#include <stdio.h>

int strlen2(char *ar);

int main(void)
{
    char st1[100] = "3sdfad";
    int n;
    
    n = strlen2(st1);
    
    printf("n: %d.
", n);
    
    return 0;
} 
 
int strlen2(char * ar)
{
    int  count = 0;
    
    while(*ar)
    {
        count++;
        ar++;
    }
    return count;
}

11、

#include <stdio.h>
#include <string.h>

#define SIZE 100

char *s_gets(char *st, int n);

int main(void)
{
    char st1[SIZE];
    
    puts("input the strings.");
    
    s_gets(st1, SIZE);
    
    puts(st1);
    
    return 0;    
} 

char *s_gets(char *st, int n)
{
    char *ret_val;
    int i = 0;
    char * find;
    
    
    ret_val = fgets(st, n, stdin);
    
    if(ret_val)
    {
        find = strchr(st, '
');
        
        if(find)
            *find = '';
        else
            while(getchar() != '
')
                continue;
    }
    
    return ret_val;
}

12、

#include <stdio.h>

char * null(char * ar);

int main(void)
{
    char st1[100] = "a f ds";
    char st2[100] = "af ds";
    
    char * temp1, * temp2;
    
    temp1 = null(st1);
    puts(temp1);
    
    temp2 = null(st2);
    puts(temp2);
    
    return 0;
}

char * null(char * ar)
{
    while(*ar != ' ')
        ar++;
    
    if(*ar == ' ')
        return ar;
    else
        return NULL;
}

13、

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define ANSWER "GRANT"
#define SIZE 90

char *s_gets(char *st, int n);

void ToUpper(char *ar);

int main(void)
{
    char try[SIZE];
    puts("input try:");
    
    s_gets(try, SIZE);
    ToUpper(try);
    
    while(strcmp(try, ANSWER))
    {
        puts("wrong, try again.");
        s_gets(try, SIZE);
        ToUpper(try);
    }
    puts("right!");
    
    return 0;    
}

char *s_gets(char *st, int n)
{
    char *ret_val;
    int i = 0;
    
    ret_val = fgets(st, n, stdin);
    
    if(ret_val)
    {
        while(st[i] != '
' && st[i] != '')
            i++;
        
        if(st[i] == '
')
            st[i] = '';
        else
            while(getchar() != '
')
                continue;
    }
    
    return ret_val;
}

void ToUpper(char * ar)
{
    while(*ar != '')
    {
        *ar = toupper(*ar);
        ar++;
    }
}

原文地址:https://www.cnblogs.com/liujiaxin2018/p/15306437.html