//字串的定長順序儲存方式,字串將位於棧上,其本身為以'\0'結尾的一串字元陣列
#ifndef _sstring_h_
#define _sstring_h_
#include #include #include #include #define stringlength 20
typedef unsigned char uchar;
typedef uchar sstring[stringlength + 1]; //定義陣列型別
void initstring(sstring ss);
void strassign(sstring ss, const char *string);
void strcpy(sstring des, const sstring src);
int strlen(const sstring s);
void show(const sstring s);
bool strempty(const sstring ss);
int strcmp(const sstring s1, const sstring s2);
void strconcat(sstring t, const sstring s1, const sstring s2); //將串s1 s2連線成乙個串t
void substring(const sstring s, sstring sub, int pos, int len); //在主串s的pos處取長度len個字元作為子串
int strindex(const sstring s, const sstring sub, int pos); //查詢子串sub在主串s中的下標,從主串s的pos位置開始查詢,未找到返回-1
void strreplace(sstring s, const sstring sub, const sstring t); //將主串s中的全部不重複子串sub全部替換為t
void strinsert(sstring s1, const sstring s2, int pos); //將串s2插入串s1的位置pos處
void strdelete(sstring s1, int pos, int len); //在串s1的位置pos處刪除長度為len的字串
void stringclear(sstring s);
#endif //_sstring_h_
#include "sstring.h"
void initstring(sstring ss)
void strassign(sstring ss, const char *string)
ss[stringlength] = '\0'; //結束符
} else //正常賦值
ss[j] = '\0'; //結束符 }}
void strcpy(sstring des, const sstring src)
des[len] = '\0';
}int strlen(const sstring s)
void show(const sstring s)
bool strempty(const sstring ss)
//比較兩個陣列內部的字串的ascii碼大小,如果s1大於s2返回正數,等於返回0,否則返回負數 ,當某個短串比較完畢後其與長串所有字元一致,則更長著大
int strcmp(const sstring s1, const sstring s2)
return *p - *q;
}//陣列的容量有限,不一定能裝下s1與s2中全部有效字元,需判斷
void strconcat(sstring t, const sstring s1, const sstring s2) //將串s1 s2連線成乙個串t
if( stringlength >= len_s1 + len_s2 ) //至少剛好能裝下s1與s2
t[i +j] = '\0';
} else if( stringlength > len_s1 ) //能裝下全部s1與部分s2
t[stringlength] = '\0';
} else //只能裝下s1 }
void substring(const sstring s, sstring sub, int pos, int len) //在主串s的pos處取長度len個字元作為子串
sub[i] = '\0';
}int strindex(const sstring s, const sstring sub, int pos) //查詢子串sub在主串s中的下標,從主串s的pos位置開始查詢,未找到返回-1
else //一旦發現不匹配,重新比較s的以前一次比較的開始字元之後1字元為開頭的數個字元與串sub全部字元
}if( '\0' == sub[j] ) //sub遍歷完成,即sub中所有字元均連續存在於s中,返回sub在s中的位置
else //未找到連續的匹配字元,返回-1表示不存在
return -1;
}void strreplace(sstring s, const sstring sub, const sstring t) //將主串s中的全部不重複子串sub全部替換為t
}//如果s2插入後s1與s2的整體長度大於陣列長度,則使s2實際插入長度為 陣列長度 - s1 長度
void strinsert(sstring s1, const sstring s2, int pos) //將串s2插入串s1的位置pos處
else //( stringlength > strlen(s1) ) 能插入部分s2
for (j = i; j >= 0; j--)
s1[pos + len + i] = '\0';
for (j = 0; j < len; j++) }
void strdelete(sstring s1, int pos, int len) //在串s1的位置pos處刪除長度為len的字串
s1[pos + j] = '\0'; //更新結束符
}void stringclear(sstring s)
#include "sstring.h"
void main()
獲得定長字串
c 中的字串是unicode編碼,length是unicode的char的個數。所以,假如乙個字串中中英文混雜,又想獲得乙個固定寬度的字串,就比較麻煩。單純轉換成位元組再擷取難免會碰到半個漢字的問題。下面實現了這樣的功能,返回固定位元組長度的字串,如果發生截斷,後面補充2個或者3個 根據截斷點的位置...
按照指定長度切割字串
按照指定長度分割字串 param inputstring 需要切割的源字串 param length 指定的長度 return public static string getdivlines string inputstring,int length if remainder 0 string s...
printf 列印 指定長度 字串
原樣輸出字串 printf s str 2.輸出指定長度的字串,超長時不截斷,不足時右對齊 printf ns str n 為指定長度的10進製數值 3.輸出指定長度的字串,超長時不截斷,不足時左對齊 printf ns str n 為指定長度的10進製數值 4.輸出指定長度的字串,超長時截斷,不足...