C primer plus 学习笔记 第11章 字符串和字符串函数

简介: C primer plus 学习笔记 第11章 字符串和字符串函数

第11章 字符串和字符串函数

11.1 表示字符串和字符串I/O

11.1.1 在程序中定义字符串

1.字符串字面量

双引号括起来的内容 为字符串字面量 或称为字符串常量。

字符串常量属于静态(static)存储类别,如果在函数中使用字符串常量,在字符串只会被存储一次,在整个程序生命期内存在。

2.字符串数组和初始化

定义字符串数组:

const char m1[40] = "Limit youtself to one line's worth.";

可以省略数组大小,让编译器自动计算数组大小:

const char m2[] = "Limit youtself to one line's worth.";

使用指针表示法创建字符串:

const char* pt1 = "Something is pointing at me.";

3.数组和指针

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

4.数组和指针的区别

 

11.1.2 指针和字符串

const char * msg = "Don't be a fool!";

const char * copy;

copy = msg;

这里的复制是让copy指向msg指向的地址,而不是将字符串拷贝过来。

 

11.2 字符串输入

读入字符串:1.分配空间,2.用输入函数获取该字符串(存到之前分配的空间)。


11.2.1 分配空间

char * name;

scanf("%s", name);

在读入name时,name未初始化,所以会把数据存到不确定的地方。所以,不要写这种东西。

可以使用数组分配空间:

char name[81];

之后可以用读取字符串函数 (如scanf)  读字符串到name中。

11.2.2 gets()函数 //由于可能导致缓冲区溢出,产生安全问题。在C11标准中已经被废除

gets()  读取整行输入,直到遇到换行符,然后丢弃换行符。

puts() 用于显示字符串,并在末尾添加换行符。

#include<stdio.h>
#define STLEN 81
int main(void)
{
    char words[STLEN];
    puts("Enter a string,Please.");
    gets(words);
    printf("Yout string twice:\n");
    printf("%s\n",words);
    puts(words);
    puts("Done.");
    return 0;
}

11.2.3 gets()的替代品

1.fgets()函数

fgets()函数通过第2个参数(例如n)限制读入的字符数来解决溢出问题。

fgets()将读取n-1个字符或遇到第一个换行符为止。fgets()读到的换行会存在字符串中。

fgets()第3个函数指明要读入的文件。如果用stdin 可表示从键盘输入

 

通常与fputs()配对使用。fputs()第二个参数表示要写入的文件,如果是stdout,就是输出在显示器上。

 

2. gets_s() 函数

用第二个参数限制读入的字符数。

 

11.2.4 scanf()函数

 

11.3 字符串输出

put(字符串地址)

fput(字符串地址,文件)

printf()  //可以格式化输出

11.4 自定义输入/输出函数

可以利用getchar()和putchar()自定义函数来处理字符串。

11.5 字符串函数 string.h

strlen()  //获取字符串长度

strcat() //拼接字符串

strncat()//拼接n长度的字符串

strcmp()//比较字符串

strcpy()

strncpy() //复制字符串本身

11.6 字符串示例

11.7 ctype.h 字符函数  用于处理字符

11.8 命令行参数

使用命令行运行程序时可以在同一行添加参数

程序通过main()的参数读取这些参数,

 

11.9 把字符串转换成数字

atoi()

相关文章
|
11月前
|
编译器 C++
【C进阶】-- 字符串函数(1)(中)
【C进阶】-- 字符串函数(1)(中)
|
11月前
【C进阶】-- 字符串函数(1)(下)
【C进阶】-- 字符串函数(1)(下)
|
算法 C++
C基础知识(字符串函数)
C基础知识(字符串函数)
44 0
|
4月前
|
Go C语言
【C语言】字符+字符串函数精讲
【C语言】字符+字符串函数精讲
|
4月前
|
C语言 存储 编解码
C语言(进阶)—字符函数和字符串函数
C语言(进阶)—字符函数和字符串函数
|
C语言
C语言进阶字符函数和字符串函数(下)
C语言进阶字符函数和字符串函数(下)
35 0
|
C语言
C语言进阶字符函数和字符串函数(上)
C语言进阶字符函数和字符串函数(上)
64 0
|
10月前
|
算法 编译器 C语言
【C进阶】字符串函数
【C进阶】字符串函数
56 0
|
11月前
|
编译器 C语言
【C进阶】-- 字符串函数(1)(上)
【C进阶】-- 字符串函数(1)(上)
|
C语言
进阶C语言:字符函数和字符串函数
C语言中有关字符串函数的使用以及模拟实现的过程,最详细的思路。
152 0
进阶C语言:字符函数和字符串函数