C语言字符串分割

Python020

C语言字符串分割,第1张

char *strtok(char *str, const char *delim)

str -- 要被分解成一组小字符串的字符串。

delim -- 包含分隔符的 C 字符串。

int sscanf(const char *str, const char *format, ...)

char *strstr(const char *haystack, const char *needle)

haystack -- 要被检索的 C 字符串。

needle -- 在 haystack 字符串内要搜索的小字符串。

可以写一个分割函数,用于分割指令,比如cat a.c最后会被分割成cat和a.c两个字符串、mv a.c b.c最后会被分割成mv和a.c和b.c三个字符串。

参考代码如下:

#include <stdio.h>

#include<string.h>

#define MAX_LEN 128

void main()

{

    int i,length,ct=0,start = -1

    char inputBuffer[MAX_LEN],*args[MAX_LEN]

    strcpy(inputBuffer,"mv a.c b.c")

    length=strlen(inputBuffer)

     for (i = 0 i <= length i++) {

        switch (inputBuffer[i]){

        case ' ':

        case '\t' :               /* argument separators */

            if(start != -1){

                args[ct] = &inputBuffer[start]    /* set up pointer */

                ct++

            }

            inputBuffer[i] = '\0' /* add a null char make a C string */

            start = -1

            break

        case '\0':                 /* should be the final char examined */

            if (start != -1){

                args[ct] = &inputBuffer[start]

                ct++

            }

            inputBuffer[i] = '\0'

            args[ct] = NULL /* no more arguments to this command */

            break

        default :             /* some other character */

            if (start == -1)

                start = i

        }

     }

    printf("分解之后的字符串为:\n")

    for(i=0i<cti++)

        printf("%s \n",args[i])

}

c语言中没有 string class, 假定你指 char 字符串。

用 sscanf 方法可以分割。

char str2[]="aa 123,bb 456,cc 789,dd 000"

逗号分割为4 部分:

aa 123

bb 456

cc 789

dd 000

-----------------

char str[]="aa,bb,cc,dd"

按逗号分割为4 部分:

aa

bb

cc

dd

-------------------------

#include <stdio.h>

main()

{

char str[]="aa,bb,cc,dd"

char str2[]="aa 123,bb 456,cc 789,dd 000"

char s[4][10]

int i

sscanf(str,"%[^,],%[^,],%[^,],%[^,]",s[0],s[1],s[2],s[3]) // 第1种方法

for (i=0i<4i++) printf("%s\n",s[i])

sscanf(str2,"%[^,],%[^,],%[^,],%[^,]",s[0],s[1],s[2],s[3])// 第1种方法

for (i=0i<4i++) printf("%s\n",s[i])

//-----------

for (i=0i<strlen(str)i++) if (str[i]==',') str[i]=' ' // 第2种方法--替换成空格分隔

sscanf(str,"%s %s %s %s",s[0],s[1],s[2],s[3])

for (i=0i<4i++) printf("%s\n",s[i])

return 0

}