码迷,mamicode.com
首页 > 其他好文 > 详细

字符串的遍历

时间:2014-06-23 06:42:29      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   color   get   

#include<iostream>
using namespace std;
void getChar1(char *str);
void getChar2(char *str);
int main(void)
{
    //字符指针用串常量初始化。分两步进行,首先申请堆空间,然后填入串值
    char *str="I Love ShangHai";
   //cin>>str; getChar1(str); getChar2(str); getchar(); }
void getChar1(char *str) { while(*str!=\0) { cout<<*str; str++; } cout<<endl; } void getChar2(char *str) { int len=strlen(str); for(int i=0;i<len;i++) { cout<<str[i]; } cout<<endl; }

“I Love ShangHai” C++会自动在串常量加上‘\0’表示结束。‘\0’的ASCII码值为0,代表一个空操作。while(*str) 和while(*str!=‘\0‘)是一个意思。

字符指针必须必须先申请堆空间,然后才能填入值。看看下面程序会出现什么问题。

#include<iostream>
using namespace std;
void getChar1(char *str);
int main(void)
{
    char *str;
    cin>>str;
    getChar1(str);
    getchar();

}
void getChar1(char *str)
{
    while(*str!=\0)
    {
        cout<<*str;
        str++;
    }
    cout<<endl;
}

f7成功编译。但是编译成功后运行时,直接奔溃。因为str 仅仅是一个字符指针,没有地方存输入的值。

#include<iostream>
using namespace std;
void getChar1(char *str);
int main(void)
{
    //字符指针用串常量初始化。分两步进行,首先申请堆空间,然后填入串值
    char *str="I Love ShangHai";
    cin>>str;
    getChar1(str);
    getchar();

}
void getChar1(char *str)
{
    while(*str!=\0)
    {
        cout<<*str;
        str++;
    }
    cout<<endl;
}

f7成功编译。编译成功后运行f5,程序直接奔溃。正确做法应该这样......

#include<iostream>
using namespace std;
int main(void)
{
    char *str=new char[80]; 
    cout<<"输入一个字符串: ";

    for(int i=0;i<strlen(str);i++)
    {
        cout<<str[i];
    }
    cout<<endl;

    delete []str;
    str=NULL;
}

 

 

 

字符串的遍历,布布扣,bubuko.com

字符串的遍历

标签:style   class   blog   code   color   get   

原文地址:http://www.cnblogs.com/qianwen/p/3799560.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!