保存字符串直到找到最后一个分隔符 - C.

时间:2017-01-04 19:13:39

标签: c string strtok

是否可以使用strtok或其他字符串函数来剪切字符串,直到找到最后一个分隔符为止。

具体的例子是日期;我想改变" 4.1.2017。"至" 4.1.2017" - 最后没有点。

2 个答案:

答案 0 :(得分:2)

如果您有一个分隔符,请使用strrchr查找字符串中的最后一个分隔符:

char str[] = "quick.brown.fox";
char *ptr = strrchr(str, '.');
if (ptr) {
    *ptr = '\0';
}
printf("%s\n"' str);

produces the following output

quick.brown

答案 1 :(得分:0)

就像我在我的评论中解释的那样(如果你不想使用strrchr或者由于某些原因你不能),我将创建一个函数来检查该分隔符的位置,如下所示:

int my_strrchr(const char *ptr, const char delimiter){
    if (ptr == NULL ){
        printf("Error, NULL Pointer\n");
        return -1;
    }

    if ( *ptr == '\0' ){
        printf("Error, the Buffer is Empty\n");
        return 0;
    }

    int i = 0;
    int ret = 0;

    while( ptr[i] != '\0' ){
        if ( ptr[i] == delimiter ){
            ret = i;
        }
        i++;
    }

    return ret;
}

并使用它像这样:

#include <stdio.h>

int main(void){
    char arr[] = "4.1.2017.";
    char delimiter = '.';

    int len;

    if( (len = my_strrchr(arr, delimiter)) > 0){
        while ( arr[len] != '\0'){
            arr[len] = '\0';
        }
        printf("%s\n", arr);
    }
}

DEMO。 任何方式这只是为了给你一个想法,你可以看到我在这里没有使用标准函数。