/**************************************************************
题目描述:
通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空
格分割。请编写一个程序,自动分离出各个子串,并使用','将其分离,并
且在最后也补充一个',',并将子串存储。
要求实现函数:
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);
***************************************************************************************/
华为校招上机一道----字符串分离
最新推荐文章于 2024-07-13 13:11:55 发布