小小字符串函数!
编写一个函数,接受一个有大写和小写字母的串,返回这个串的全部是小写字母的备份,我写了下面这个#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;
}
感觉很莱,谁帮忙写个更好点的。
str2很可能是个空指针,那么程序崩溃
str2很可能size不够,那么程序崩溃
其实好的做法是,统计一次str1的小写字母个数后,再逐个copy。 我只是随便写写,所以那个size定义得有些小,呵呵。(那个if(isupper(str1[i]))应该是if(islower...)
不过有一点楼上说的"str2很可能是个空指针,那么程序崩溃"好像不会哦,因为str2=pt2,而pt2已经定义为
*pt2=NULL了,所以好像程序崩溃不了哦。
还有你最后那个提议,的确可行,不过感觉没有那么简便,呵呵!还是谢谢版主!
回复 3# 晨曦的朝阳 的帖子
函数是写给别人用的不是自己用的,所以你的str2=pt2是别人的行为不是你的行为。你如果给别人一个函数库,比如全是字符处理的函数库,难道你还得要求别人,这个函数用之前,必须给str2这个参数100的大小,否则会出错。那就太不友好了。
呵呵,早点有这种意识,总是好的。[em09] 多谢楼主指点!呵呵! 是版主哦,嘻嘻!
页:
[1]
