📄 cstring.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 + -