我怎么能在两个特定字符之间拆分字符串?

时间:2013-12-04 13:38:58

标签: c

我有一个字符串(文件名),我想在字符之间提取一个字符串,例如:

string="/export/aibn84_2/SED/Sbc_cww.sed"

我需要将字符串存储在数组的最后"/""_cww.sed"之间,以便稍后使用它。 有人可以给我一些提示吗?

P.S。如果我想读取一个文件列表并将它们的名称分开,然后定义一个字符串数组并将它们保存在数组的元素中,我该如何应用它?

2 个答案:

答案 0 :(得分:0)

有两种功能正在使用中:

strrchr - >找到字符串

中最后出现的字符

strncpy - >从字符串

复制第一个 num 字符

strstr - >返回指向str1

中第一次出现的str2的指针
char str[] = "/export/aibn84_2/SED/Sbc_cww.sed";
char* pch;
pch=strrchr(str,'/');
char* pch2;
pch2=strstr(str,"_cww.sed");
char value[40];
strncpy(value, pch+1, pch2-(pch+1));
printf("%s\n", value);

答案 1 :(得分:0)

#include<stdio.h>
#include<string.h>
int main(){
    char str[] = "/export/aibn84_2/SED/Sbc_cww.sed"; // define the full array
    char *str_start = strrchr(str, '/')+1; // locat the first character after the last '/'
    char *str_end = strstr(str_start, "_cww.sed"); // locat "_cww.sed" after the last '/'
    char str_new[str_end-str_start+1]; // define the new array
    strncpy(str_new, str_start, str_end-str_start); // copy the elements bitween the start and the and
    str_new[str_end-str_start] = '\0'; // terminate the new array with the null character
    puts(str_new); // print the new array
    return 0;
}