⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 splitp.c

📁 ReactOS是一些高手根据Windows XP的内核编写出的类XP。内核实现机理和API函数调用几乎相同。甚至可以兼容XP的程序。喜欢研究系统内核的人可以看一看。
💻 C
字号:
#include <precomp.h>

/*
 * @implemented
 */
void _tsplitpath(const _TCHAR* path, _TCHAR* drive, _TCHAR* dir, _TCHAR* fname, _TCHAR* ext)
{
  _TCHAR* tmp_drive = NULL;
  _TCHAR* tmp_dir = NULL;
  _TCHAR* tmp_ext = NULL;

  tmp_drive = (_TCHAR*)_tcschr(path,':');
  if (drive)
    {
      if (tmp_drive)
        {
          _tcsncpy(drive,tmp_drive-1,2);
          *(drive+2) = 0;
        }
      else
        {
          *drive = 0;
        }
    }
  if (!tmp_drive)
    {
      tmp_drive = (_TCHAR*)path - 1;
    }

  tmp_dir = (_TCHAR*)_tcsrchr(path,'\\');
  if (dir)
    {
      if (tmp_dir)
        {
          _tcsncpy(dir,tmp_drive+1,tmp_dir-tmp_drive);
          *(dir+(tmp_dir-tmp_drive)) = 0;
        }
      else
        {
          *dir =0;
        }
    }

  /* If the dot is before the last dir separator, it's part
   * of a directory name, not the start of the extension */
  if (!tmp_ext || tmp_ext < tmp_dir)
    {
      tmp_ext = (_TCHAR*)path+_tcslen(path);
    }
  if (ext)
    {
      _tcscpy(ext,tmp_ext);
    }

  if (fname)
    {
      if (tmp_dir)
        {
          _tcsncpy(fname,tmp_dir+1,tmp_ext-tmp_dir-1);
          *(fname+(tmp_ext-tmp_dir-1)) = 0;
        }
      else
        {
          _tcsncpy(fname,tmp_drive+1,tmp_ext-tmp_drive-1);
          *(fname+(tmp_ext-path))=0;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -