一个获取字符串中最后一个分隔符后的字符串首字符指针的小程序
例如:
“sdfsdf-sdfsdfhwe-weth-sd-38945”
我们如果想要获取上述字符串中的最后一个’-'的指针,可以通过如下小程序中的getpointer_lastok_after函数实现,直接调用即可!!!
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *getpointer_lastok_after(const char *buf, char tok)
{
char *ptr;
char *prev_ptr;
static char tmp_buf[128] = {0};
int cnt = 0;
memset(tmp_buf, 0, sizeof(tmp_buf));
sscanf(buf, "%s", tmp_buf);
ptr = tmp_buf;
cnt = 0;
while (1) {
ptr = strchr(ptr, tok);
if (ptr == NULL) {
if (cnt == 0) {
//printf("tmp_buf:%s\n", tmp_buf);
//printf("%s---%d\n", __func__, __LINE__);
break;
} else {
ptr = prev_ptr;
//printf("%s---%d\n", __func__, __LINE__);
break;
}
}
ptr += 1;
prev_ptr = ptr;
cnt++;
}
return ptr;
}
int main(int argc, char *argv[])
{
FILE *fp = NULL;
size_t num = 0;
char buf[1024] = {0};
char *ptr = NULL;
fp = fopen("trace", "r");
if (fp == NULL) {
printf("fopen failed\n");
return -1;
}
while (!feof(fp)) {
ptr = fgets(buf, sizeof(buf), fp);
if (ptr == NULL) {
if (feof(fp)) {
printf("eof!\n");
break;
}
}
//printf("buf:%s\n", buf);
ptr = getpointer_lastok_after(buf, '-');
if (ptr == NULL) {
printf("getpointer_lastok_after failed!\n");
continue;
//return -1;
}
printf("ptr:%s\n", ptr);
}
return 0;
}