字符串与字符串函数

一、字符串输出函数

  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 != '')
        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)

原文地址:https://www.cnblogs.com/wyt123/p/11146828.html