c - 如何在 C 中从字符串中获取特定单词并消除其他单词

标签 c string

您好,以下是文件的路径(存储为字符串)。

C:/db/OOSA/LIBRARIES/OOSA00/MS/filename.jpg

现在我只想要其中的文件名,例如:“文件名”,其余的应该被过滤或删除。 在 C 中如何做到这一点? 我想将该文件名应用于其他一些内容,但我想避免 .jpg 扩展名和路径“C:/db/OOSA/LIBRARIES/OOSA00/MS/ ” 下面是代码:

   static mgbool gbeadNApply (mgrec* db, mgrec* parent, mgrec* rec, void* gBead)
{
   toolrec* toolRec = (toolrec*)gBead;

   if (mgGetCode(rec) == fltXref);
   {
           char *xName;
           parent = mgGetParent(rec);
           mgGetAttList(rec,fltXrefFilename,&xName,MG_NULL);
           mgSetName(parent,xName);
       }

   return MG_TRUE;
}

这里 xName 首先收集包含路径的文件名。在 mgSetName 中,您还可以看到 xName (这里 xName 分配收集的文件名以及路径,例如 C:/db/OOSA/LIBRARIES/OOSA00/MS/filename.jpg。现在的情况是我只想将其文件名部分写入 mgSetName。因此我想为其过滤 xName。

最佳答案

这将非常模糊,但您可能可以弄清楚如何编写一个函数来执行此操作:

  1. 编写一个函数来查找“.”
  2. 编写一个函数,以新字符串返回“.”之前的所有内容
  3. 编写一个函数来查找最后一个“/”(反斜杠?“\”)
  4. 编写一个函数,删除“/”之前的所有内容(包括“/”)

您将使用for循环

int find_period(const char *string)
{
  if(!string) return -1;

  int n;
  for(n = 0; n < strlen(string); n++){
    if(string[n] == '.') return n;

    return -1;
}

然后你可能就明白了。

关于c - 如何在 C 中从字符串中获取特定单词并消除其他单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27385638/

相关文章:

c - Sprintf 函数 + 顺序参数

java - 存储 Shell 输出

c - 线程内读取错误的数组

c - c 中不熟悉的函数声明

c - GMP 无法处理前导 "+"吗?

c - 如何在 Linux 和 Mac OSx 中获得更高级的网络接口(interface)卡类型

java - 字符串操作模式

c - 什么信号(SIGPIPE,SIG_IGN);做?

string - Golang 中的 Scanln 不接受空格

C++ ifstream 字符串