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

📄 cstring.cpp

📁 eC++编译器源码
💻 CPP
字号:
#pragma cstring
#pragma qualified
#include <String.h>
#include <SYSTEM.h>

void memcpy(SYSTEM.WORD &dest[], SYSTEM.WORD &source[], unsigned int count)
{
  while (count>0) {
   DEC(count);
   dest[count] = source[count];
  };
};

void memset(SYSTEM.WORD &dest[], char c, unsigned int count)
{ unsigned int t;
  t = ORD(c)*256+ORD(c);
  while (count>0) {
   DEC(count);
   dest[count] = SYSTEM.WORD(t);
  };
};


void  strcat(char &string1[], const char str[]) //append str to end of string1
{
  String.Insert(string1, str, String.last);
};

int  strchr(const char &string1[], char ch)  //index of first occurrence of ch in string1 or NULL
{
  unsigned int i;
  for (i=0; string1[i]!='\0'; i=i+1)
    if (string1[i]==ch) return i;
  return -1;
};

int  strcmp(const char &string1[], const char string2[]) //-1 < 0 = +1 > for string1 compared to string2
{
  return String.Compare(string1, string2);
};

int  strcoll(const char &string1[], const char string2[]) //-1 < 0 = +1 > for locale-specific compare
{
  return String.Compare(string1, string2);
};

int  stricmp(const char &left[], const char right[]) //-1 < 0 = +1 > for case insensitive compare
{
  unsigned int i;
    if (HIGH(left) <= HIGH(right)) {
      for (i = 0; i<=HIGH(left); i=i+1) {
        if ((left[i] != right[i]) || (left[i]=='\0')) {
          if ((CAP(left[i])>='A')&&(CAP(left[i])<='Z')) {
            if (CAP(left[i])==CAP(right[i])) continue;
          };
          if (right[i]=='\0') return 0;
          else if (CAP(left[i]) < CAP(right[i])) return -i-1;
          else return i+1;
        };
      };
      if (HIGH(left) == HIGH(right)) return 0;
      else if (right[HIGH(left)+1] == '\0') return 0;
      else return -HIGH(left)-2;
    } else {
      for (i = 0; i<=HIGH(right); i=i+1) {
        if ((left[i] != right[i]) || (left[i]=='\0')) {
          if ((CAP(left[i])>='A')&&(CAP(left[i])<='Z')) {
            if (CAP(left[i])==CAP(right[i])) continue;
          };
        if (right[i]=='\0') return 0;
          else if (CAP(left[i]) < CAP(right[i])) return -i-1;
          else return i+1;
        };
      };
      if (left[HIGH(right)+1] == '\0') return 0;
      return HIGH(right)+2;
    };
};

void  strcpy(char &string1[], const char str[]) //copy str over string1
{
  String.Copy(string1, str);
};

int  strcspn(const char &string1[], const char string2[]) //first position of string1 matching any char in string2 or -1
{
  unsigned int i,j;
  for (i=0; string1[i]!='\0'; i=i+1) {
    j = 0;
    while (string2[j]!='\0') {
      if (string1[i]==string2[j]) return i;
      INC(j);
    };
  };
  return -1;
};

unsigned int  strlen(const char &string1[]) //returns string length 0 for empty string
{
  return String.Length(string1);
};

void  strlwr(char &string1[])  //convert string to lowercase
{
  unsigned int i;
  i = 0;
  while (string1[i]!='\0') {
    if ((string1[i]>='A')&&(string1[i]<='Z')) string1[i] = CHR(ORD(string1[i])-ORD('A')+ORD('a'));
    INC(i);
  };

};

void  strnset(char &string1[], char c, unsigned int n) //set string1 to no more than n c chars
{
  unsigned int i;
  for (i=0; (i<n)&&(string1[i]!='\0'); i=i+1) string1[i] = c;
};

int  strpbrk(const char &string1[], const char str[]) //find first occurrence in string1 of any char in str
{
  unsigned int i,j;
  for (i=0; string1[i]!='\0'; i=i+1) {
    j = 0;
    while (str[j]!='\0') {
      if (string1[i]==str[j])  return i;
      INC(j);
    };
  };
  return -1;
};

int  strrchr(const char &string1[], char ch)  //find last occurrence of ch in string1
{
  unsigned int i,j;
  j = 0;
  for (i=0; string1[i]!='\0'; i=i+1)
    if (string1[i]==ch) j=i;
  if (j!=0) return j;
  return -1;
};

void  strrev(char &string1[])  //reverses order of chars in a string
{
  unsigned int i,j,k;
  char ch;
  i = String.Length(string1);
  j = 0;
  k = i/2;
  while (k>0) {
    DEC(i);
    ch = string1[j];
    string1[j] = string1[i];
    string1[i] = ch;
    INC(j);
    DEC(k);
  };
};

void  strset(char &string1[], char c) //set all chars of string1 to c
{
  unsigned int i;
  i = 0;
  while (string1[i]!='\0') {
    string1[i] = c;
    INC(i);
  };
};

int  strspn(const char &string1[], const char string2[]) //returns index of first char not in set of str chars
{
  unsigned int i,j;
  for (i=0; string1[i]!='\0'; i=i+1) {
    j = 0;
    while (string2[j]!='\0') {
      if (string1[i]==string2[j]) break;
      INC(j);
    };
    if (string2[j]=='\0') return i;
  };
  return -1;
};

int  strstr(const char &string1[], const char str[]) //find first occurrence of str in string1 or NULL
{
  unsigned int i;
  i = String.Occurs(string1, str);
  if (i==String.last) return -1;
  return i;
};

void  strupr(char &string1[]) //convert string1 to uppercase
{
  unsigned int i;
  i = 0;
  while (string1[i]!='\0') {
    if ((string1[i]>='a')&&(string1[i]<='z')) string1[i] = CAP(string1[i]);
    INC(i);
  };
};


void cstring(void)
{
};

⌨️ 快捷键说明

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