//题目57:编写一个业务函数,实现字符串(前后各有三个空格,单词前后也均有空格) //" i am student, you are teacher " , //各个单词首字符大写,结果如下" i am student, you are teacher " , //要求1:实现所有接口 70 //要求2:写出测试程序 30 #include<stdio.h> #include<stdlib.h> #include<string.h> //需求解析:实现英语句子中各个单词首字符大写(字符串不确定) //思路:①遍历句子中所有的字符,找出所有的空格 //②只要发现非空格,就将字符一个个存入数组中,直到遇到空格位置,生成一个字符串数组,数组中存储所有的单词 //③ 重新拼接英文句子 //处理英语句子 int ProtectEnglish(const char * pinstr/*in*/, char *pout/*in*/){ int ERRO_MSG = 0; if (pinstr == NULL || pout == NULL) { ERRO_MSG = 1; printf("pinstr == NULL || pout==NULL erro msg:%d ", ERRO_MSG); return ERRO_MSG; } int i = 0, j = 0,k=3; //获取字符串的长度 int index = strlen(pinstr); int index2 = index; //定义返回字符串 char *resstr = pout; memset(resstr, 0, sizeof(char)*(index + 1)); //定义单词个数 int numx = 0; //定义存储字符串的二维数组 char **ptemp1 = (char **)malloc(sizeof(char *)); //定义单词个数 int num2 = 0; //定义单词中字符个数 int num = 1; //分配单个单词存数数组 char *ptemp2 = NULL; while (index--){ if (*pinstr!=' ') { char tempc = 0; if (num==1) { ptemp2 = (char *)malloc(sizeof(char)); //处理非字母字符 if ((int)*pinstr>96 && (int)*pinstr<123) { //首字母大写 tempc = (int)*pinstr - 32; } else{ tempc = *pinstr; } } else{ //重新分配内存空间 ptemp2 = (char *)realloc(ptemp2, sizeof(char)*(num)); tempc = *pinstr; } //存储单个字符 ptemp2[num - 1] = tempc; num++; } else{ //当遇到空格时开始计数下一个单词 if (num>1) { //确保每个单词都是字符串 ptemp2 = (char *)realloc(ptemp2, sizeof(char)*(num)); ptemp2[num - 1] = '