| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 846 人关注过本帖
标题:小小字符串函数!
只看楼主 加入收藏
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
 问题点数:0 回复次数:5 
小小字符串函数!
编写一个函数,接受一个有大写和小写字母的串,返回这个串的全部是小写字母的备份,我写了下面这个
#include <iostream>
#include <string>
#include <stdlib>
using namespace std;
void Upper_Print( char *str1,char *str2)
{
     int i=-1,j=0;
     while(str1[++i]!='\0')
     if(isupper(str1[i]))
            str2[j++]=str1[i];
     str2[j]='\0';
}
int main()
{
    char * pt1=NULL,*pt2=NULL;
    char str_array1[20],str_array2[20];
    pt1=str_array1;
    pt2=str_array2;
    cout<<"input the str: ";
    cin>>str_array1;
    cout<<"the upper characters are : ";
    Upper_Print(pt1,pt2);
    cin.ignore(1);
    cout<<pt2;
    getchar();
    return 0;
}

感觉很莱,谁帮忙写个更好点的。
搜索更多相关主题的帖子: 函数 字符 char str include 
2008-07-18 17:16
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
没考虑安全问题
str2很可能是个空指针,那么程序崩溃
str2很可能size不够,那么程序崩溃

其实好的做法是,统计一次str1的小写字母个数后,再逐个copy。

Fight  to win  or  die...
2008-07-18 23:19
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
得分:0 
我只是随便写写,所以那个size定义得有些小,呵呵。(那个if(isupper(str1[i]))应该是if(islower...)
不过有一点楼上说的"str2很可能是个空指针,那么程序崩溃"好像不会哦,因为str2=pt2,而pt2已经定义为
*pt2=NULL了,所以好像程序崩溃不了哦。
还有你最后那个提议,的确可行,不过感觉没有那么简便,呵呵!还是谢谢版主!
2008-07-18 23:34
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
回复 3# 晨曦的朝阳 的帖子
函数是写给别人用的不是自己用的,所以你的str2=pt2是别人的行为不是你的行为。
你如果给别人一个函数库,比如全是字符处理的函数库,难道你还得要求别人,这个函数用之前,必须给str2这个参数100的大小,否则会出错。那就太不友好了。

呵呵,早点有这种意识,总是好的。

Fight  to win  or  die...
2008-07-18 23:38
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
得分:0 
多谢楼主指点!呵呵!
2008-07-19 20:21
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
得分:0 
是版主哦,嘻嘻!
2008-07-19 20:21
快速回复:小小字符串函数!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019135 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved