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
}