前言
字符、串和字符串区别及使用
一、区别及定义
字符:
在计算机中是以整型形式存储的,当需要显示时会根据ASCII表中的对应关系显示出相应的符号或图案
字符的输入:
scanf("%c",&ch);
ch=getchar
字符的输出:
printf("%c",ch);
putchar(ch);
串:
是一种数据结构,是由一组类型相同的若干个数据组成-末尾又结束标 志
对于这种数据结构的处理都是批量性的,从开头位置一直处理到结束标志为止
字符串:
由字符组成的串型结构,结束标志是'\0'
字符串的输入:
scanf("%s",地址);
缺点:不能输入空格
char *gets(char *s);
功能:输入字符串,并且可以接受空格
返回值:链式调用(把一个函数的执行结果,通过返回值作为另一个函数的参数)
char *fgets(char *s, int size, FILE *stream);
功能:可以设置输入的字符串的长度为size-1;超出部分不会接受,它会为'\0'预留位置
s:内存块
size:字节数
stream:stdin
注意:如果输入的字符不足size-1,最后的\n会被一起接收了
字符串的输出:
printf("%s",地址)
int puts(const char *s);\0
功能:输出一个字符串,会在末尾自动添加一个换行\n
返回值:成功输出的字符个数
二、字符串的存在形式:
字符数组:
char str[10]={'A','B','C'...}
由char类型组成的数组,要为'\0'预留位置,初始化麻烦
使用的是栈内存,数据可以随意修改
字符串字面值:
"由双引号包含的若干个字符"
在末尾隐藏一个'\0'
字符串字面值是以地址形式存在的,数据存储在代码段中,如果修改就会产生段错误
两个一模一样的字符串字面值在代码段只有一份
常用方式:
字符数组[]="字符串字面值";
会自动给'\0'预留位置
赋值完成后字符串会存在两份,一份在代码段,另一份在stack(可以修改)
三、字符串相关的常用操作:
#include <string.h>
size_t strlen(const char *s);
计算字符串长度,不包括'\0'
注意:sizeof() 和 strlen 的区别
char *strcpy(char *dest, const char *src);
功能:把src的内容拷贝到dest,相当于给dest赋值,必须借助函数
返回值:链式调用
char *strncpy(char *dest, const char *src, size_t n);
功能:把src前n个字符拷贝给dest
char *strcat(char *dest, const char *src);
功能:把src追加到dest后面,相当于+=对于字符串
返回值:链式调用
char *strncat(char *dest, const char *src, size_t n);
功能:把src前n个字符追加到dest后面
int strcmp(const char *s1, const char *s2);
功能:比较两个字符串的大小,按照字典序比较,谁在前面谁小,只要比较出结果,立即返回,后面的不再比较
返回值:
s1>s2 正数
s1<s2 负数
s1==s2 0
int strncmp(const char *s1, const char *s2, size_t n);
功能:比较前n个字符两个字符串的大小
#include <stdlib.h>
int atoi(const char *nptr);
字符串转成int类型
long atol(const char *nptr);
字符串转成long类型
long long atoll(const char *nptr);
字符串转longlong类型
double atof(const char *nptr)
功能:字符串转double类型
#include <string.h>
char *strstr(const char *haystack, const char *needle);
功能:查找haystack,是否存在needle
返回值:needle首次在haystack中出现的位置,如果找不到返回NULL
char *strchr(const char *s, int c);
功能:查找s中是否有字符c
返回值:c在s中首次出现的位置,不存在返回NULL
int sprintf(char *str, const char *format, ...);
相当于字符串的拼接
功能:把各种类型数据输出到str中
返回值:拼接后str的长度
int sscanf(const char *str, const char *format, ...);
功能:从str读取解析各种类型的数据
返回值:成功读取到的变量的个数
总结
对字符、串和字符串的理解及学习,有错误,还请指正