一、字符串輸出函數
1、puts() 函數
使用較為簡單,只需要將字符串的地址作為參數進行傳遞即可。
#include <sthio,h> #define DEF "I am a #define string1" int main (void){ char str1[80] = "I am a #define string1"; const char * str2 = "I am a #define string1"; ... puts(EDF); puts(str1); puts(str2); puts(&str[5]); puts(str2 + 4); ... return 0; }
puts() 函數在顯示字符串時自動在其末尾添加一個換行符。【gets() 函數丟棄輸入中換行符】
puts() 函數在遇到空字符時就停止輸出。【如果字符串中未含有空字符,puts() 函數不知在何處停止,會一直打印字符串后面內存中的內容】【對於字符串,其中必須確保含有空字符】
2、fputs() 函數
fputs() 函數是puts() 針對文件定制的版本。
fputs() 函數的第2個參數指明要寫入數據的文件。如果是要打印在顯示器上,可以使用 ‘stdout’ 這一參數。
fputs() 函數不會在輸出的末尾添加換行符。【fgets() 函數保留輸入中的換行符】
char line[81]; while (fgets(line, 81, stdin)) fputs(line, stdout);
3、printf() 函數
printf() 函數不會自動在每個字符串末尾加上一個換行符。【因此需要在參數中指明換行符的位置】
4、自定義輸入 / 輸出函數
可以在getchar() 和putchar() 的基礎上自定義所需要的函數。
/*一個類似於puts() 的函數,但是不會自動添加換行符的函數*/ #include <stdio.h> void put1(const char * string){ while (*string != '\0') putchar (*string++); }
二、常用字符串函數
1、int strcmp (const char * s1, const char * s2)
如果 s1 字符串在機器排序序列中位於 s2 字符串的后面,該函數返回一個正數;
如果 s1 字符串在機器排序序列中位於 s2 字符串的前面,該函數返回一個負數;
如果兩個字符串相等,則返回0;
2、int strncmp (const char * s1, const char * s2, size_t n)
該函數的作用和 strcmp() 函數相似,不同的是,該函數在 n 個字符后或遇到第一個空字符時停止比較。
3、char * strcpy (char * restrict s1, const char * restrict s2)
該函數把 s2 指向的字符串拷貝到 s1 指向的位置,返回值是 s1 。
4、char * strncharcpy (char * restrict s1, const char * restrict s2, size_t n)
該函數把 s2 指向的字符串拷貝到 s1 指向的位置,拷貝的字符數不超過 n,其返回值是 s1。該函數不會拷貝空字符后面的字符,如果源字符串的字符少於 n 個,目標字符就以拷貝的空字符結尾;如果源字符串有 n 個或超過 n 個字符,就不拷貝空字符。
5、char * strcat (char * restrict s1, const char * restrict s2)
該函數把 s2 指向的字符串拷貝至 s1 指向的字符串末尾。s2 字符串的第 1 個字符將覆蓋 s1 字符串的空字符。函數返回 s1 。
6、char * strncat (char * restrict s1, const char * restrict s2, size_t n)
該函數把 s2 字符串中的 n 個字符拷貝至 s1 指向的字符串末尾。s2 字符串的第 1 個字符將覆蓋 s1 字符串的空字符。不會拷貝 s2 字符串中的空字符和氣候的字符,並會在拷貝字符的末尾添加一個空字符。函數返回 s1 。
7、char * strchr (const char * s, int c)
如果 s 字符串中包含 c 字符,則函數返回指向 s 字符串中首次出現的 c 字符串的指針(末尾的空字符也是字符串的一部分,所以在查找范圍內);如果在字符串 s 中未找到 c 字符,該函數則返回空指針。
8、char * strpbrk (const char * s1, const char * s2)
如果 s1 字符中包含 s2 字符串中的任意字符,該函數返回指向 s1 字符串首位置的指針;如果在 s1 字符串中未找到任何 s2 字符串中的字符,則返回空字符。
9、char * strrchr (const char * s, int c)
函數返回 s 字符串中 c 字符的最后一次出現的位置(末尾的空字符也是字符串的一部分,所以在查找范圍內)。如果未找到 c 字符,則返回空指針。
10、char * strstr (const char * s1, const char * s2)
函數返回指向 s1 字符串中 s2 字符串出現的首位置。如果在 s1 中沒有找到 s2,則返回空指針。
11、size_t strlen (const char * s)