求字串長度
strlen
size_t strlen(const char *str);//返回字串中'\0'前面出現字元的個數
模擬實現
//計數器方式
int my_strlen(const char *str)
return count;
}//遞迴方式
int my_strlen(const char *str)
//指標-指標
int my_strlen(const char *str)
return ptr - str;
}
長度不受限制字串函式
strcpy
char *strcpy(char *destination, const char *source);
源字串必須以'\0'結束,會將源字串的'\0'拷貝到目標空間,目標空間必須足夠大
模擬實現
char *my_strcpy(char *dst, const char *str)
return dst;
}
strcat
char *strcat(char *destination, const char *source);
字串拼接源字串以'\0'結尾,目標空間必須足夠大,
模擬實現
char *my_strcat(char *dst, const char *str)
while ((*ret++ = *str++))
return dst;
}
strcmp
int strcmp(const char *str1, const char *str2);
第乙個字串大於第二個字串,返回乙個大於0的數字
第乙個字串等於第二個字串 ,返回0
第乙個字串小於第二個字串,返回乙個小於0的數字
模擬實現
int my_strcmp(const char *str1, const char *str2)
if (*str1 == '\0' && *str2 == '\0')
return 0;
else
}
長度受限制的字串函式
strncpy
char *strncmp(char *destination, const char*source, size_t num);
拷貝num個字元從源字串到目標字串,如果源字串的長度小於num,拷貝完源字串後,在目標字串後追加0,知道num個
模擬實現
char* my_strncpy(char *des, const char *sstr, int count)
if (count>0) }
else
return des;
}
strncat
char *strncat(char *destination, const char *source, size_t);
模擬實現
char *my_strncat(char *dst, const char *str, int count)
while (count && (*ret++ = *str++))
*ret = '\0';
return dst;
}
strncmp
int strncmp(const char *str1, const char *str2, size_t num);
模擬實現
int my_strncmp(const char *dst, const char *str, int n)
else if (*dst < *str)
dst++,str++;
n--;
} if (n == 0)
return 0;
}
字串查詢
strchr
char *strchr( const char *string, int c );//返回第乙個出現目標字元的指標
strrchr
char *strrchr( const char *string, int c );//從後往前找第乙個出現目標字元的指標
strpbrk
char *strpbrk( const char *string, const char *strcharset );//返回第乙個字串中第乙個出現在第二個字串中的字元的位址
strstr
char *strstr( const char *string, const char *strcharset );//找子串
模擬實現
char *my_strstr(const char *str1, const char *str2)
if (*substr == '\0')
return cp;
cp++;
}}
strspn
size_t strspn( const char *str1, const char *str2 );//返回str1字串中開始部分匹配str2字串中的字元個數
strcspn
size_t strcspn( const char *str1, const char *str2);//返回str1指向字串中開始部分出現的不在str2指向字串中的字元個數
strtok
char *strtok( char *str, const char *dst );//dst定義了分隔符的字元集合
//找到str中的下乙個分隔符標記並用\0結尾,返回乙個指向這個標記的指標
//第乙個引數不為null,找到str中的第乙個標記,儲存他在字串中位置
//第乙個引數為null,函式在同乙個字串中被儲存的位置開始,查詢下乙個標記
//字串中不存在更多的標記,返回null
錯誤資訊報告
strerror
char *strerror( int errnum );//返回錯誤碼,對應的錯誤資訊
記憶體操作函式(操作基本單元是位元組)
memcpy
void *memcpy( void *dest, const void *src, size_t count );//void *可以被定義,不能被解引用
函式從src的位置開始向後複製count個位元組的資料到dest的記憶體位置
遇到'\0'並不會停下來,如果dest和src有重疊,其複製結果未定義
模擬實現
void *my_memcpy(void *dest, void *src, int count)
return dest;
}
memmove
void *memmove( void *dest, const void *src, size_t count );
memmove函式處理的源記憶體塊和目標記憶體塊是可以重疊的,
模擬實現
void *my_memmove(void *dst, const void *src, int count)
} else }
return dst;
}
memset
void *memset( void *dest, int c, size_t count );
以位元組為基本單位,初始化每個位元組為c
memcmp
int memcmp( const void *buf1, const void *buf2, size_t count );
比較buf1和buf2指標開始的count個位元組
memchr
void *memchr( const void *buf, int c, size_t count );
字串和字串函式
字元輸入輸出 getchar putchar ch getchar putchar ch 字串函式 字串輸入 建立儲存空間 接受字串輸入首先需要建立乙個空間來存放輸入的字串。char name scanf s name 上述的用法可能會導致程式異常終止。使用字串陣列 可以避免上述問題 char na...
字串和字串函式
1.字串字面量 字串常量 用雙引號括起來的內容稱為字串字面量,也叫字串常量。字串常量屬於靜態儲存類別,這說明如果在函式中使用字串常量,該字串只會被儲存一次,在整個程式的生命期內存在,計時函式被呼叫多次。用雙引號括起來的內容被視為指向該字串儲存位置的指標。hello 中的 hello 類似於乙個陣列名...
字元函式和字串函式
size t strlen const char str 模擬實現strlen 字串長度 include include size t mystrlen const char str return count int main 字串拷貝 char strcpy char destination,co...