C語言day09-09指向函數(shù)的指針練習(xí)

pragma mark 指向函數(shù)的指針練習(xí)

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. 遍歷字符串,判斷當(dāng)前字符串是不是空格,如果是空格將下一個字符轉(zhuǎn)成為大寫
    
    // 1. 先實現(xiàn)接收字符串
    // 2. 再實現(xiàn)字母的大小寫轉(zhuǎn)換
    // 3. 再實現(xiàn)替換字符串中的單詞首字符
    /*
    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);
    // 注意: 數(shù)組名稱不能做+1的操作,只有指針才可以
    
    /*
    char *temp = str;
    // 2.遍歷字符串
    // temp = &str[0]
    upperCase(temp);

    while (*temp != '\0') { // 第一次取出 h
        // 2.1 取出當(dāng)前的字符,判斷是否等于 空格, 如果等于空格就需要將下一個字符轉(zhuǎn)為 大寫
        if ((*temp) == ' ') {
            // 2.2 將下一個字符串轉(zhuǎn)為大寫
            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.不管三七二十一 先將第一個字母轉(zhuǎn)換為大寫
    // 2.遍歷字符串
    // temp = &str[0]
    upperCase(temp);
    
    while (*temp != '\0') { // 第一次取出 h
        // 2.1 取出當(dāng)前的字符,判斷是否等于 空格, 如果等于空格就需要將下一個字符轉(zhuǎn)為 大寫
        if ((*temp) == ' ') {
            // 2.2 將下一個字符串轉(zhuǎn)為大寫
//            upperCase(++temp);
            funtionP(++temp);
            
        }
        else
        {
            temp++;
        }
    }
}
void upperCase(char *p)
{
    // 1. 判斷是不是小寫字母
    if (*p >='a' && *p <= 'z')
    {
        // 2.將小寫字母轉(zhuǎn)成大學(xué)字母
        *p = *p - ('a' - 'A');
    }
}

// 將首字母小寫 轉(zhuǎn)成 大寫
char upper(char value)
{
    // 1. 判斷是不是小寫字母
    if (value >='a' && value <= 'z')
    {
        // 2.將小寫字母轉(zhuǎn)成大學(xué)字母
        value = value - ('a' - 'A');
    }
    
    return value;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容