C语言字符串拆分

#define M 100
#define N 128
#include <stdio.h>
#include <string.h>
/*
设某字符串表示地区名称及地区代码, 将形如这样的字符串拆成相应的字符串,
例:
北京-010#上海-021#广州-020
按'#'拆成的字符串为3个,分别为
北京-010
上海-021
广州-020
*/
int splitStr(char *src, char *format, char (*substr)[N]){
char * begin;
char * pos;
int substrLen;
int formatLen = strlen(format);
int i;
for(i=0, begin=src; ( pos = (char*)strstr(begin, format) ) != NULL;){
substrLen = pos - begin;
strncpy(substr[i], begin,substrLen);
begin = pos + formatLen;
i++;
}
substrLen = strlen(begin);
if(substrLen > 0){
strncpy(substr[i], begin,substrLen);
i++;
}
return i;
}
int main(int argc, char *argv[])
{

char str[N];
gets(str);
char substr[M][N];
int i = splitStr(str,"#", substr);
printf("%d\n", i);
for(int j=0; j<i; j++){
puts(substr[j]);
}
return 0;
}
求把输出的结果变成
3
北京 010
上海 021
广州 020

使用strstr函数嘛(以下代码测试通过)
功能:在一个字符串中查找特定的字符串,如果查找到会返回查找到字符串的位置,失败返回NULL
分析:搜索字符串"bizbox_userlang=",成功后取出'='后和‘=’后第1个';'之间的所有字符

#include <stdio.h>
int main(int argc, char* argv[])
{
char buf1[]="bizbox_username=admin; bizbox_userpass=c1501f6698e058e47d3f81f723c2b9f2; bizstore_note=; bizbox_userlang=zh; csd=33; cod=29.30; business_note=null";
char *buf2="bizbox_userlang=";
char *ptr;
char txt[100];

ptr=strstr(buf1,buf2); //成功返回的位置是"bizbox_userlang=zh; csd=33...."
if( ptr==NULL)
{
printf("没有找到该内容\n");
return -1;
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答