将字符串S表示的一行英文文本中每个单词的第一个字母改成大写

.编写函数test2实现:将字符串S表示的一行英文文本中每个单词的第一个字母改成大写。(单词指由空格隔开的字符串

解决问题的关键就是在于怎么样子判断当前的字符是一个单词的首字符(这里的字符就是一个字符串中的一个了) 

我们应该定义一个char类型的指针变量 因为char类型的指针变量在在做++或者+1运算的时候指针偏移是1个字节就相当于每次跳过一个字符来到下一个字符

例如 char * p = s  这里的s是一个char类型数组的名   我们知道数组名代码该数组的首地址

接下来贴出代码

#include<stdio.h>
int main(void){
int sta = 0; //这里用s来表示*p当前的状态也就是0和1来表示0表示当前*p处
//于空格状态1处于字符状态 

char s[] = "hello world hello world";
char *p = s;

while(*p != '\0'){//由于‘\0’就是一个字符串的结尾了我们就在结尾结束循环 
if(*p != ' ' && sta == 0){
*p -= 32;
}
if(*p != ' '){
sta = 1;
}else if(*p == ' '){
sta = 0;
}
p++;


printf("%s", s);
return 0;
}



以上就是考察你的c的指针 和字符数组 以及char类型 和ascii码之间的关系

追问

题目要求是调用函数 而不是在主函数里进行转换啊

追答

你把主要部分提出去就好了

你不会吗?

追问

我就是只会写主函数 不会写子函数才来提问的

温馨提示:答案为网友推荐,仅供参考
相似回答