1. 程式人生 > >c語言實現字串的分割

c語言實現字串的分割

#include<stdio.h>
#include<iostream>
using namespace std;


int split(char text[], char* parts[])
{
int count = 0; // 分段的個數
int start = 0; // 每一分段的首地址
bool flag = false; // 遍歷text,標識當前是否處於有效字元


for (int i = 0; ; i++)
{
char ch = text[i];


if (ch == ',' || ch == '\0' || ch == ' ' || ch == '\t')//遇到分隔符,換行符不是分隔符
{
if (flag) // 如果當前flag==true
{
flag = false;//如果遇著連續的分隔符不進入這裡


text[i] = '\0'; // 修改為結束符,完成分段
parts[count] = text + start; // 記錄這一分段的首地址
count++;
}
}
else//遇到有效字元
{
if (!flag) // 如果當前flag==false
{
flag = true;//遇到連續的有效數字不進入這裡
start = i;
}
}
if (ch == '\0')//進一步判斷 如果遇到的分隔符是\0則終止迴圈,不讀取\0後面的字元
break; // 結束迴圈
}
return count; // 返回分段個數,表示parts含有的字串個數
}


int main()
{
char text[] = "hello,world,,good,\tmorning ";//27個,包括\0
//字串裡面不能有\0,否則\0後面的字元讀取不到比如"\0hello,world,,good,\tmorning ",則讀取\0之後就結束了,後面一個字元都讀取不到


    char* pstr[16];
int count = split(text, pstr);


for (int i = 0; i < count; i++)
cout << pstr + i << " " << sizeof(*(pstr + i)) << " " << *(pstr + i) << endl;


return 0;
}