C语言——字符串学习笔记(2)

一、字符串的读写

1.printf 与puts

printf都很熟悉,还有一个输出字符串的函数puts(),其使用方法如下。值得注意的时它输出完了之后会自动换行。

puts(str);

2.scanf与gets

使用scanf读取字符串如下:(注意不需要取地址符&了,因为str是数组名,编译器把它传递给函数时会把他当做指针处理。)

scanf("%s",str);

使用scanf 读取字符串时无法读入空字符,换行符也会导致scanf的停止读入(空格符和制表符也会有此一样的效果)

为了一次读入一整行输入就可以使用gets函数。gets函数不会跳过空白符的读入,直到找到换行符就才停止。

由于无法指定长度,因此这些读入数组时是不安全的,scanf可以使用%ns 来指出输入最多字符,而gets天生就不安全(可以使用fgets函数)

3.fgets函数

# include
char *fgets(char *s, int size, FILE *stream);

是函数原型,返回字符数组,有三个参数,第一个表示存入数组的首地址,第二个表示读入字符串长度,第三个表示何种输入流读取,如标准输入流stdin(这里不多讲解)

二、访问字符串中的字符

1.数组下标访问

2.指针自增自减访问

三、使用C语言的字符串库

# include 头中

1.strcpy函数(字符串复制)

原型:

char *strcpy(char *s1,const char *s2);

把字符串s2复制给s1(把s2中的字符复制到指向s1的数组中),但是是有危险的,strcpy函数不能检查str2所指向的字符串的大小是否真的合适str1指向的数组。

还有一种函数strncpy()有第三个参数用于限制所复制的字符数可以这样使用

strncpy(str1,str2,sizeof(str1) - 1);
str1[sizeof(str1) - 1] = '\0';

2.strlen函数(求字符串长度)

原型:

size_t strlen (const char *s);

size_t 类型是一种无符号整数类型,除非是处理极长的字符串,我们就可以把它当做整数处理。即返回类型理解为整数。

strlen函数返回字符串s的长度:s中第一个空字符之前的字符个数(不包括空字符)

3.strcat函数(字符串拼接)

原型:

char *strcat(char *s1,const char *2);

strcat函数把字符串s2的内容追加到字符串s1的末尾,并且返回字符串s1(指向字符串的指针),当然如果str1的长度不够容纳str2指向的字符串中的字符,也是具有危险性的。

同样也有strncat函数,具有第三个参数来限制所复制的字符数。

strncat(str1,str2,sizeof(str1) - strlen(str1) -1);

计算str1中剩余的空间,然后减去1给空字符留下空间。

4.strcmp函数

strcmp(字符串比较)

int strcmp(const char *s1,const char *s2);

s1小于s2  返回小于0的值

s1等于s2 返回0

s1大于s2 返回大于0的值

其实可以理解为做差了,s1-s2

 

你可能感兴趣的:(字符串,c语言,指针)