C语言字符串和字符串函数

1.

  A)字符串输入

  1)gets()函数读取整行输入,直至遇到换行符,然后丢弃换行符,储存其余字符,并在这些字符的末尾添加一个空字符使其成为一个C字符串

    例:

    char words[length];

    gets(words); //但是如果输入的字符串长度大于length,会导致缓冲区溢出

  2)fgets(words,length,stdin<表示从键盘输入>)函数通过第二个参数限制读入的字符数来解决溢出问题,如果输入过多,会截取length大小的那一段;如果输入中遇到换行符,会把它储存在字符串中

    fgets()函数返回char的指针,如果函数读到文件结尾,他将返回一个特殊的指针:空指针

    fputs(words,stdout)函数用于显示输出,并且不在字符串末尾添加换行符

例:

char words[length];

fgets(words,length,stdin);

fputs(words,stdout);

  3)gets_s()函数只从标准输入中读取输入,并在在读到换行符会丢弃它而不是存储它

  4)s_gets()

    示例代码:

char * s_gets(char * st,int n)

{

    char * ret_val;//最后返回的字符串

int i = 0;

ret_val = fgets(st,n,stdin);

if(ret_val)//即 ret_val!=null

{

    while(st[i] != '\n' && st[i] != '\0')

      i++;

    if(st[i] == '\n')

      st[i] = '\0';//将是换行符的地方变成空字符

    else

      while(getchar() != '\n') //抛弃换行符

        continue;

}

return ret_val;

}

  5)scanf()函数:更像是“获取单词”函数,而不是“获取字符串”函数

  B)字符串输出

  1)puts()函数只显示字符串,而且自动在显示的字符串末尾加上换行符,在遇到空字符时就停止输出

    例:puts("hello world.");

  2)fputs(words,stdout)函数用于显示输出,并且不在字符串末尾添加换行符

例:

char words[length];

fgets(words,length,stdin);

fputs(words,stdout);

  3)printf()函数不会自动在每个字符串末尾加上一个换行符


2.如果要在字符串内部使用双引号,必须在双引号前面加上一个反斜杠(\)

3.字符串常量属于静态存储类别,这说明如果在函数中使用字符串常量,该字符串只会被储存一次,在整个程序的生命期内存在,即使

函数被调用多次。用双引号括起来的内容被视为指向该字符串储存位置的指针。

4.初始化数组把静态存储区的字符串拷贝到数组中,而初始化指针只把字符串的地址拷贝给指针

5.字符串函数

  1)strlen()函数用于统计字符串的长度

  2)strcat()函数用于拼接字符串

  3)strncat()函数指定了最大添加字符数

  4)strcmp()函数用于字符串比较

  5)strncmp()函数可以比较到第三个参数指定的字符数

  6)strcpy()函数相当于是字符串赋值运算符

  7)strncpy()函数可以指明可拷贝的最大字符数

  8)sprintf()函数把数据写入字符串,而不是打印在显示器上


6.声明数组将分配存储数据的空间,声明指针只分配储存一个地址的空间

你可能感兴趣的:(C语言字符串和字符串函数)