字符串與字符串函數 - 字符串輸出 & 常用字符串函數


一、字符串輸出函數

  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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM