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

📄 fln_fix.c

📁 国外网站上的一些精典的C程序
💻 C
字号:
/***  FLN_FIX.C****  Original Copyright 1988-1991 by Bob Stout as part of**  the MicroFirm Function Library (MFL)****  The user is granted a free limited license to use this source file**  to create royalty-free programs, subject to the terms of the**  license restrictions specified in the LICENSE.MFL file.*/#include <stdio.h>#include <string.h>#include <dos.h>#include <io.h>#include "sniptype.h"#include "filnames.h"/****************************************************************//*                                                              *//*  Function to `crunch' dot directories and check for          *//*  DOS-valid path strings. Drive specifiers in the path        *//*  ignored.                                                    *//*                                                              *//****************************************************************/char *fln_fix(char *path){      Boolean_T dir_flag = False_, root_flag = False_;      char *r, *p, *q, *s;      if (path)            strupr(path);      /* Ignore leading drive specs   */      if (NULL == (r = strrchr(path, ':')))            r = path;      else  ++r;      unix2dos(r);                      /* Convert Unix to DOS style    */      while ('\\' == *r)                /* Ignore leading backslashes   */      {            if ('\\' == r[1])                  strcpy(r, &r[1]);            else            {                  root_flag = True_;                  ++r;            }      }      p = r;                            /* Change "\\" to "\"           */      while (NULL != (p = strchr(p, '\\')))      {            if ('\\' ==  p[1])                  strcpy(p, &p[1]);            else  ++p;      }      while ('.' == *r)                 /* Scrunch leading ".\"         */      {            if ('.' == r[1])            {                  /* Ignore leading ".."                                */                  for (p = (r += 2); *p && (*p != '\\'); ++p)                        ;            }            else            {                  for (p = r + 1 ;*p && (*p != '\\'); ++p)                        ;            }            strcpy(r, p + ((*p) ? 1 : 0));      }      while ('\\' == LAST_CHAR(path))   /* Strip trailing backslash     */      {            dir_flag = True_;            LAST_CHAR(path) = '\0';      }      s = r;      /* Look for "\." in path        */      while (NULL != (p = strstr(s, "\\.")))      {            if ('.' == p[2])            {                  /* Execute this section if ".." found                 */                  q = p - 1;                  while (q > r)           /* Backup one level           */                  {                        if (*q == '\\')                              break;                        --q;                  }                  if (q > r)                  {                        strcpy(q, p + 3);                        s = q;                  }                  else if ('.' != *q)                  {                        strcpy(q + ((*q == '\\') ? 1 : 0),                              p + 3 + ((*(p + 3)) ? 1 : 0));                        s = q;                  }                  else  s = ++p;            }            else            {                  /* Execute this section if "." found                  */                  q = p + 2;                  for ( ;*q && (*q != '\\'); ++q)                        ;                  strcpy (p, q);            }      }      if (root_flag)  /* Embedded ".." could have bubbled up to root  */      {            for (p = r; *p && ('.' == *p || '\\' == *p); ++p)                  ;            if (r != p)                  strcpy(r, p);      }      if (dir_flag)            strcat(path, "\\");      return path;}

⌨️ 快捷键说明

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