Day11(下).期中考试题答案

来源:互联网 发布:罗技游戏鼠标mac设置 编辑:程序博客网 时间:2024/04/28 12:17

1.先看第一个函数体如何实现,没什么好说的了,直接show you the codes

#define _CRT_SECURE_NO_WARNINGS#include "stdlib.h"#include "stdio.h"#include "string.h"int GetString(const char *str1/*in*/, char *str2/*in*/);int GetString_Adv(const char *str1/*in*/, char **str2/*out*/);int GetString_Adv_Free1(char *str2);int GetString_Adv_Free2(char **str2);int GetString(const char *str1/*in*/, char *str2/*in*/){    char *p1 = NULL, *p2 = NULL;    int len = 0,i =0;    if (str1 == NULL || str2 == NULL)    {        return -1;    }    len = strlen(str1);    if (len <1)    {        return -1;    }    strcpy(str2, str1);    p1 = str2 + 1;    p2 = str2;    for (i = 0; i < len; i++)    {        if (isalpha(*p1) && isspace(*p2))        {            *p1 -= 32;        }        p1++;        p2++;    }     return 0;}int GetString_Adv(const char *str1/*in*/, char **str2/*out*/){    char *p1 = NULL, *p2 = NULL;    int len = 0, i = 0;    char *tmp = NULL;    if (str1 == NULL || str2 == NULL)    {        return -1;    }    len = strlen(str1);    tmp = (char *)malloc((len + 1)*sizeof(char));    if (tmp == NULL)    {        return -2;    }    if (len <1)    {        return -1;    }    strcpy(tmp, str1);    //准备循环环境    p1 = tmp + 1;    p2 = tmp;    for (i = 0; i < len; i++)    {        if (isalpha(*p1) && isspace(*p2))        {            *p1 -= 32;        }        p1++;        p2++;    }    //赋值    *str2 = tmp;    return 0;}int GetString_Adv_Free1(char *str2){    if (str2 != NULL)    {        free(str2);    }}int GetString_Adv_Free2(char **str2){    char *tmp = NULL;    tmp = *str2;    if (str2 = NULL)    {        return 0;    }    if (tmp != NULL)    {        free(tmp);    }}void main(){    int ret = 0;    char *p1 = "    i am student, you are teacher    ";    char str1[1024*10] = { 0 };        ret = GetString(p1, str1);    if (ret != 0)    {        return;    }    printf("%s", str1);        int ret1 = 0;    char *p2 = "    i am student, you are teacher    ";    char *str2 = NULL;    ret1 = GetString_Adv(p2, &str2);    printf("%s", str2);    GetString_Adv_Free2(&str2);    //放在GetString_Adv_Free2里面进行*str2= NULL会出错,为什么呢?    str2 = NULL;    system("pause");}


2.参考Day6的内容吧。。。。。。。


3.

4.








0 0