美文网首页十天学会C语言程序员
C语言day09-09指向函数的指针练习

C语言day09-09指向函数的指针练习

作者: liyuhong165 | 来源:发表于2016-05-04 23:41 被阅读68次

    pragma mark 指向函数的指针练习

    pragma mark 概念

    /**
     控制台输出 po * xxx
     
     */
    

    pragma mark 代码

    #include <stdio.h>
    char upper(char value);
    void upperCase(char *p);
    //void ts(char *temp);
    void ts(char *temp, void (*funtionP)(char *));
    int main()
    {
    #warning 要求用户输入的一段英文,将用户输入的英文单词所有的首字母大写
        // hello world -- > Hello World
        
        // 1. 接收用户输入的字符串
        // 2. 遍历字符串,判断当前字符串是不是空格,如果是空格将下一个字符转成为大写
        
        // 1. 先实现接收字符串
        // 2. 再实现字母的大小写转换
        // 3. 再实现替换字符串中的单词首字符
        /*
        printf("请输入一句英文, 单词之间用空格隔开\n");
    //    char *str;
        char str[100];
    //    scanf("%s",str);
        gets(str);
        printf("str = %s\n",str);
         */
        
        /*
        char c = 'a';
    //    printf("c = %c\n",upper(c));
    //    printf("c = %c\n",upperCase(&c));
        upperCase(&c);
    
        printf("c = %c\n",c);
         */
    
        // 1. 接收用户输入
        printf("请输入一句英文, 单词之间用空格隔开\n");
        //    char *str;
        char str[100];
        //    scanf("%s",str);
        gets(str);
        // 注意: 数组名称不能做+1的操作,只有指针才可以
        
        /*
        char *temp = str;
        // 2.遍历字符串
        // temp = &str[0]
        upperCase(temp);
    
        while (*temp != '\0') { // 第一次取出 h
            // 2.1 取出当前的字符,判断是否等于 空格, 如果等于空格就需要将下一个字符转为 大写
            if ((*temp) == ' ') {
                // 2.2 将下一个字符串转为大写
                upperCase(++temp);
                
            }
            else
            {
                temp++;
            }
        }
         */
    //    ts(str,upperCase(str));
        ts(str, upperCase);
        printf("str  = %s",str);
        
        return 0;
    }
    
    
    void ts(char *temp, void (*funtionP)(char *))
    {
        // 1.不管三七二十一 先将第一个字母转换为大写
        // 2.遍历字符串
        // temp = &str[0]
        upperCase(temp);
        
        while (*temp != '\0') { // 第一次取出 h
            // 2.1 取出当前的字符,判断是否等于 空格, 如果等于空格就需要将下一个字符转为 大写
            if ((*temp) == ' ') {
                // 2.2 将下一个字符串转为大写
    //            upperCase(++temp);
                funtionP(++temp);
                
            }
            else
            {
                temp++;
            }
        }
    }
    void upperCase(char *p)
    {
        // 1. 判断是不是小写字母
        if (*p >='a' && *p <= 'z')
        {
            // 2.将小写字母转成大学字母
            *p = *p - ('a' - 'A');
        }
    }
    
    // 将首字母小写 转成 大写
    char upper(char value)
    {
        // 1. 判断是不是小写字母
        if (value >='a' && value <= 'z')
        {
            // 2.将小写字母转成大学字母
            value = value - ('a' - 'A');
        }
        
        return value;
    }
    
    

    相关文章

      网友评论

        本文标题:C语言day09-09指向函数的指针练习

        本文链接:https://www.haomeiwen.com/subject/yqcdrttx.html