计算字符串长度
#include <stdio.h> #include <string.h> size_t strlen(const char* s)//字符串函数 { int idx = 0; while (s[idx] != '\0'){//字符串总长不包含字符'0' idx++; } return (idx+1);//1是字符'0' } int main(int argc, char const *argv[]) { char line[] = "hello"; printf("strlen = %lu\n", strlen(line));//字符串函数计算字符串长度 printf("sizeof = %lu\n", sizeof(line));//sizeof计算字符串长度 return 0; }比较两个字符串
#include <stdio.h> #include <string.h> //字符串函数,比较两个字符串,并将差值返回 int mycmp(const char* s1, const char* s2) { //方法一 while (*s1 == *s2 && *s1 != '\0'){//字符串结尾标志字符:'0' s1++; s2++; } return *s1 - *s2; // {//方法二 // int idx = 0; // while (s1[idx]==s2[idx] && s1[idx]!='\0'){//字符串结尾标志字符:'0' // idx++; // } // return s1[idx] - s2[idx] ; // } // {//方法三 // int idx = 0; // while (1){ // if(s1[idx] != s2[idx]){ // break; // } else if(s1[idx] == '\0'){ // break; // } // idx++; // } // return s1[idx] - s2[idx] ; // } } int main(int argc, char const *argv[]) { char s1[] = "abc"; char s2[] = "Abc"; printf("%d\n", mycmp(s1,s2)); printf("%d\n", 'a'-'A'); return 0; }复制一个字符串
#include <stdio.h> #include <string.h> //字符串函数, 将s2的内容复制到s1 char* strcpy(char* dst, const char* src) { //方法一 ,数组 int idx = 0; while(src[idx]){//src[idx]等价 src[idx] != '\0' dst[idx] = src[idx]; idx++; } dst[idx] = '\0'; return dst; //方法二,指针 // char* ret = dst; // while( *src ){//*src等价*src != '\0' // *dst++ = *src++; // } // *dst = '\0'; // return ret; } int main(int argc, char const *argv[]) { char s1[] = "abc"; char s2[] = "Abc"; strcpy(s1,s2); printf("%s\n",s1); printf("%s\n",s2); return 0; }