A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lixp 中级黑马   /  2015-10-27 21:24  /  1013 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用C语言实现单词首字母大写,但是输出来的字符串是空的。
#include<stdio.h>
void stringChange(char *str);//声明函数
int main(int argc,char * argv[]){
        //1.定义一个字符数组,用来存储输入的字符串
        char arr[80];
        printf("请输入一个字符串:\n");
        gets(arr);
    printf("输入的字符串为:%s\n",arr);
        //2.调用字符串转换函数
        stringChange(arr);
        printf("转换后的字符串:%s\n",arr);
        return 0;
}

//自定义一个字符串首字母转换函数
void stringChange(char *str){
        //定义一个标记,表示是否是一个空字符如果flag=0,则表示下一个字符开始是一个单词
        int flag=0;
        //循环遍历字符串,直到遇到'\0'结束
        while(*str!='\0'){
                if(*str=' '){
                        flag=0;
                }else if(flag==0){
                        //小写字母减去32就可以转换成大写字母
                        *str-=32;
                        flag=1;//改变标记
                }
                str++;
        }          
}

4 个回复

倒序浏览
明天才看到字符串数组{:2_39:}
回复 使用道具 举报
这里面有个地方写错了
void stringChange(char *str){
        int flag=0;
        while(*str!='\0'){
                if(*str=' ')  //---------------->if(*str ==' ' )               {
                        flag=0;
                }else if(flag==0){
                        *str-=32;
                        flag=1;
                }
                str++;
        }         
}
回复 使用道具 举报
void stringChange(char *str){
         //定义一个标记,表示是否是一个空字符如果flag=0,则表示下一个字符开始是一个单词
        int flag=0;
         //循环遍历字符串,直到遇到'\0'结束
         while(*str!='\0'){
                 if(*str=' ')  //判断字符是否为空,应该用关系运算符==,=是赋值运算符。用(*str==' ')解决
{
                         flag=0;
                 }else if(flag==0){
                         //小写字母减去32就可以转换成大写字母
                        *str-=32;
                         flag=1;//改变标记
                }
                str++;
         }         
}
回复 使用道具 举报
额,这么点小问题导致整个字符串都空了,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马