华为校招上机一道----字符串分离

/**************************************************************
题目描述:
通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空
格分割。请编写一个程序,自动分离出各个子串,并使用','将其分离,并
且在最后也补充一个',',并将子串存储。
要求实现函数:
void DivideString (const char *pInputStr, long IInputLen, char *pOutputStr );
【输入】 pInputStr: 输入字符串
IInputLen: 输入字符串长度【输出】 pOutputStr: 输出字符串,空间已经开劈好,
与输入输
入字符串等长;
【注意】 只需要完成该函数功能算法,中间不需要有任何IO的输入输出
示例:
输入:"abc def ghi d"
输出:"abc,def,ghi,d"
****************************************************************/
#include<cstdio>
#include<iostream>
#include<cstring>
#include<assert.h>
using namespace std;

void DivideString (const char *pInputStr, long IInputLen, char *pOutputStr )
{
    int i=0;
    assert(pInputStr!=NULL);
    assert(pOutputStr!=NULL);
    assert(IInputLen>0);
    const char *src=pInputStr;
    while(*src!='\0')
    {
        if(*src==' ')
        {
            *pOutputStr++=',';
        }
        else
        {
            *pOutputStr++=*src;
        }
           src++;
    }
	*pOutputStr='\0';  //  不要 忘记
}
#define N 255
int main()
{
    char a[N];
    cout<<"please input"<<endl;
    //cin不能有空格
    cin.get(a,N);
    cout<<a<<endl;
    cout<<"the length of a is "<<strlen(a)<<endl;
    cout<<"sizeof(a)"<<sizeof(a)<<endl;
    char *p=new char(strlen(a));
    DivideString (a,strlen(a),p);
    cout<<"p="<<p<<endl;
    delete []p;
}
/****************************************************************************************
cin  >> 是会过滤掉不可见字符(如 空格 回车,TAB 等)
     接受一个字符串,遇“空格”、“TAB”、“回车”都结束
char ch;
ch=cin.get(); //或者cin.get(ch);  接受一个字符
cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
char a[20];
cin.get(a,20);
cin.getline() // 接受一个字符串,可以接收空格并输出
char m[20];
cin.getline(m,5);
getline() // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”
和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数
gets() // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”
char m[20];
gets(m); //不能写成m=gets();
getchar() //接受一个字符,需包含“#include<string>”
char ch;
ch=getchar(); //不能写成getchar(ch);
***************************************************************************************/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值