字符串(string)是由零个或者多个字符串组成的有限序列。
字符串中字符的数目称为字符串的长度。
串中任意个连续字符组成的子序列称为改串的子串。包含子串的串相应地称为主串。
串相等:当且仅当两个串的长度相等,并且各个对应位置的字符都相等时。
由一个或者多个空格组成的串' '称为空格串,非空字符串!
C语言中的字符串最末尾是'\0',这个不用解释了。
串赋值StrAssign、串比较StrCompare、串求长StrLength、串连接StrConcat以及求子串SubString构成了字符串操作的最小操作子集。
字符串操作strcmp、strcmp、strcat、strlen操作的实现(不带n的非安全版本)。
#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}' && *p2!='#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}' && *p2!='#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}')
{
return -1;
}else if(*p1!='#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}' && *p2=='#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}')
{
*dst++ = *src++;
}
*dst = '#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}')
{
s1++;
}
// Copy s2
while(*s2!='#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}')
{
*s1++ = *s2++;
}
// End
*s1 = '#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}';
}
int string_length(char* s)
{
int len = 0;
while(*s!='#include <stdio.h>
int string_comp(char* s1, char* s2)
{
char* p1 = s1;
char* p2 = s2;
while(*p1!='\0' && *p2!='\0')
{
if(*p1>*p2)
{
return 1;
}else if(*p1<*p2)
{
return -1;
}else
{
p1++;
p2++;
}
}
// Length
if(*p1=='\0' && *p2!='\0')
{
return -1;
}else if(*p1!='\0' && *p2=='\0')
{
return 1;
}
else
{
return 0;
}
}
void string_copy(char* src, char* dst)
{
while(*src!='\0')
{
*dst++ = *src++;
}
*dst = '\0';
}
// Append s2 to s1
void string_concat(char* s1, char* s2)
{
// Go to end of s1
while(*s1!='\0')
{
s1++;
}
// Copy s2
while(*s2!='\0')
{
*s1++ = *s2++;
}
// End
*s1 = '\0';
}
int string_length(char* s)
{
int len = 0;
while(*s!='\0')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}')
{
s++;
len++;
}
return len;
}
int main()
{
char* s1 = "Liheyuanxx";
char* s2 = "liheyuan";
char buf[1024];
printf("string_comp:%d\n", string_comp(s1, s2));
string_copy(s1, buf);
printf("copy result:%s\n", buf);
string_concat(buf, s2);
printf("concat result:%s\n", buf);
printf("length:%d\n", string_length(buf));
return 0;
}