2013级C++第17周项目【项目2-用指针玩字符串】--之任意删除字符串的字符

来源:互联网 发布:linux snmp 无法启动 编辑:程序博客网 时间:2024/06/07 20:45
/** 程序的版权和版本声明部分* Copyright (c)2013, 在校学生* All rightsreserved.* 文件名称: 项目2.cpp* 作    者:刘旺* 完成日期:2014年3月13日* 版本号: v1.0** 输入描述:* 问题描述:指针是神奇的,指向整型的指针int *p1,可以操作整型数组int a[];指向字符型的指针char *p2,*           可以操作字符数组(字符串)char str[];指向指针的指针可以操作二维数组。更灵活的是,在函数*           的传递中,指针、数组名在一定程度上可以互换。去除字符串str中的特定字符c(如空格),*           结果仍保存到原字符串中.* 程序输出:* 问题分析:*/#include <iostream>using namespace std ;void adelchar(char str[], const char c)      //数组方法{     int i=0 ;     int j = 0 ;     char str2[20] ;     while(str[i]!='\0')     {         if(str[i]!=c)         {             str2[j] = str[i] ;             j++ ;         }         i++ ;     }     str2[j] = '\0' ;                  //注意这个代表字符串的结束标志一定不能少     i = 0 ;     while(str2[i]!='\0')     {         str[i] = str2[i] ;         i++ ;     }     str[i] = '\0' ;}void pdelchar(char *str, const char c)    //指针方法{       int i=0 ;     int j = 0 ;     char str2[20] ;     while(*(str+i)!='\0')     {         if(*(str+i)!=c)         {             str2[j] = *(str+i) ;             j++ ;         }         i++ ;     }     str2[j] = '\0' ;     i = 0 ;     while(str2[i]!='\0')     {         *(str+i) = str2[i] ;         i++ ;     }     *(str+i) = '\0' ;}int main(){    cout << "数组方法:" << endl ;    char str[20] = "I am liu wang !" ;    char c,s ;    cout << "原字符串: str=" << str << endl ;    cout << "请输入您想删除的字符:" ;    cin.get(c) ;    adelchar(str,c) ;    cout << "去" <<c << "后的字符串:" << str << endl ;    getchar() ;              //用来吸收回车    cout << "指针方法:" << endl ;    char str2[20] = "I like C++ !" ;    cout << "原字符串: str2=" << str2 << endl ;    cout << "请输入您想删除的字符:" ;    cin.get(s) ;    pdelchar(str2,s) ;    cout << "去" << s << "后的字符串:" << str2 << endl ;    return 0 ;}

我觉得这道题比较有意思,我记得上学期我学习c的时候经常忘记再修改后的字符串后加'\0',这次又遇到个问题我发现每当我删除第一个字符串的字符数后程序就结束了,我无法在输入字符删除第二个字符串的字符,后来我仔细想了想程序运行过程发现经过实践发现是因为回车字符被cin.get()获取了,并且我发现不能用"cin>>"来输入字符然后删除字符,要用get()。因为在我调试程序的过程中发现如果用cin输入字符就无法删除句子中的‘空格字符’。

0 0
原创粉丝点击