是否可以使用strtok或其他字符串函数来剪切字符串,直到找到最后一个分隔符为止。
具体的例子是日期;我想改变" 4.1.2017。"至" 4.1.2017" - 最后没有点。
答案 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。 任何方式这只是为了给你一个想法,你可以看到我在这里没有使用标准函数。