扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这个是用c++写的不过和c的原理也差不多我运行过了,有什么问题再问吧,c不知道能否运行,不过现在c/c++程序设计试验系统通常都有嵌套c++,你打开c界面时单击vc6.0创建一个项目运行就可以了。
公司主营业务:网站设计制作、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出光泽免费做网站回馈大家。
#include iostream
using namespace std;
char** split(char p[],char c,int k)
{
int i,m,j;
char **q;
q=(char**)new char*[k];
for(i=0;ik;i++)
q[i]=(char*)new char*[20];
i=0;
j=0;
m=0;
while(p[i])
{
if(p[i]!=',')
{
q[j][m++]=p[i++];
}
else
{
q[j][m]='\0';
j++;
m=0;
i++;
}
}
q[k-1][m]='\0';
for(i=0;i4;i++)
{
coutq[i];
coutendl;
}
return q;
}
void main()
{ int k;
char p[]="ab,cde,efgh,ghi32";
char c=',';
int i=0,j=0,m=0;
while(p[i])
{
if(p[i]==',')
j++;
i++;
}
j=j+1;//接受到底有多少个单词在分割后通过逗号去判断
k=j;
char**q=split(p,c,k);
printf("\n");
for(i=0;i4;i++)
{
coutq[i];
coutendl;
}
}
#include stdio.h
#include string.h
// 将str字符以spl分割,存于dst中,并返回子字符串数量
int split(char dst[][80], char* str, const char* spl)
{
int n = 0;
char *result = NULL;
result = strtok(str, spl);
while( result != NULL )
{
strcpy(dst[n++], result);
result = strtok(NULL, spl);
}
return n;
}
int main()
{
char str[] = "what is you name?";
char dst[10][80];
int cnt = split(dst, str, " ");
for (int i = 0; i cnt; i++)
puts(dst[i]);
return 0;
}
C/C++中的Split函数是strtok()其函数原型如下:
char * strtok (char * str, const char * delimiters);
函数说明
strtok()用来将字符串分割成一个个片段。参数str指向欲分割的字符串,参数delimiters则为分割字符串,当strtok()在参数str的字符串中发现到参数delimiters的分割字符时则会将该字符改为'\0'字符。在第一次调用时,strtok()必需给予参数str字符串,往后的调用则将参数str设置成NULL。每次调用成功则返回下一个分割后的字符串指针。
返回值
返回下一个分割后的字符串指针,如果已无从分割则返回NULL。
示例-1
/* strtok example */
#include stdio.h
#include string.h
int main ()
{
char str[] ="a,b,c,d*e";
const char * split = ",";
char * p;
p = strtok (str,split);
while(p!=NULL) {
printf ("%s\n",p);
p = strtok(NULL,split);
}
getchar();
return 0;
}
本例中,实现对字符串'a,b,c,d*e"用逗号(,)来作界定符对字符串进行分割。
输出结果将如下所示:
a
b
c
d*e
因为delimiters支持多个分割符, 我们将本示例中的语句行
const char * split = ",";
改成 const char * split = ",*"; //用逗号(,)和星号(*)对字符串进行分割
这样输出结果将如下所示:
a
b
c
d
e
这个函数在纯C++环境中的string类中是不存在的,只有在C++/CLR环境中才有这个函数的。如果想在C语言中使用切割字符串函数,可以使用一个库函数char *strtok(char *s, const char *delim)来实现,分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。另外,在C语言中要包含#include string.h头文件,而在C++语言中要包含#include string头文件,这样才可以使用这个函数。 还有在最新版的linux环境下,这个函数已经不再使用,由速度更快的strsep()函数来代替它。
c语言中 有切割字符串的函数啊!\x0d\x0a\x0d\x0astrtok函数(const char *str, const char *ch)\x0d\x0a\x0d\x0a第一个是字符串,第二个是以那个字符做切割。\x0d\x0a\x0d\x0a例子:\x0d\x0a#include \x0d\x0a#include \x0d\x0aint main(void)\x0d\x0a{\x0d\x0achar s[] = "123-sldkf-123ls-343434-dfjdlkfj-dflcmvn";\x0d\x0achar *delim = "-";\x0d\x0achar *p;\x0d\x0aprintf("%s ", strtok(s, delim));\x0d\x0awhile((p = strtok(NULL, delim))\x0d\x0aprintf("%s ", p);\x0d\x0aprintf("\n");\x0d\x0areturn 0;\x0d\x0a} \x0d\x0a\x0d\x0achar s[] = "dlkjf-sdlkfjsdf\lsdkljfl'sldkjf\sdkfjsdlf\lskdjfls";\x0d\x0a如果想用-和\两个符号切割的话\x0d\x0achar *delim = "-\";\x0d\x0a这样就可以了
有的,在string库文件中有char *strtok( char *str1, const char *str2 );应用方法如下,
#includestdio.h
#include string.h
//程序功能用""作为分隔符,结果输出“今天是”、“2015年”、“6月”、“8日”、“星期一”
int main()
{
char str[] = "今天是2015年6月8日星期一";
char str0[] = "";
char *result = NULL;
result = strtok( str, str0);
while( result != NULL ) {
printf( "\"%s\"\n", result );
result = strtok( NULL, str0 );
}
return 0;
}
char *strtok( char *str1, const char *str2 );函数返回字符串str1中紧靠着“分隔符str2”的部分的指针,字符串str2作为标记分隔符。如果标记分隔符没有找到,函数返回NULL。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流