首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小写变大写出现乱码解决思路

2012-10-16 
小写变大写出现乱码#include iostreamusing namespace stdvoid f(char p){p++char &c*pc+A-a}

小写变大写出现乱码
#include <iostream>
using namespace std;
void f(char p) 
{
p++;
char &c=*p;
c+='A'-'a';
}
void main()
{
char str[]="abcde";
f(str+3);
cout<<str<<endl;
return 0;  
}


void f(char p) // 改为void f(char *p)
f(str+3);//去掉
//改为:for(int i=0;i<sizeof(str);i++){f(str+i);}
return 0; //去掉此句。
实现结果:
ABCDE

但是实际运行却又乱码出现,我想要的结果就是小写变成大写的就行。怎么回事啊?


[解决办法]
1、把void f(char *p)中的p++去掉。
本身就是要操作当前指针,在操作前执行p++,让指针指向下一个char字符,那么当前的字符就被跳过了。

2、for循环中,终止条件改为i < sizeof(str) - 1
sizeof(str)在这里面是6,因为还包含了结尾的'\0',所以要-1,否则会造成数组越界,结果就是显示乱码。

另外,在c++的cctype库中有直接变换大小写的函数,代码如下:

C/C++ code
    for(int i=0;i<sizeof(str) - 1;++i)    {        str[i] = toupper(str[i]);    } 

热点排行