欢迎关注笔者,你的支持是持续更博的最大动力
目录
- 类型(字符串 v.s. 字符数组)
- 指针和字符串(scanf举例)
- 库函数举例
- 相关内容
- 其他
本文主要讨论:
- 字符串、字符数组名称的类型
- 读取整数、字符数组的区别
- 操作字符串的库函数举例
- 字符串常量类型:char *
- 字符数组名称的类型也是 char *
举例
char * word = "Please input your name:";
//"Please input your name:"是字符串常量,类型:char *,可以赋值给char*类型指针wordchar name[20] = "Jack";
//字符数组name,name类型:char *
char * p = name;
//name可以赋值给char*类型指针pcout << name << endl;
//输出: Jack
cout << p << endl;
//输出: Jack
指针和字符串(scanf举例) 读取键盘输入的字符串:
int main(){
char a[20];
//a类型:char*
int n;
//n类型:int
scanf("%d%s", &n, a);
//输入n、a。注:"%d%s":格式控制,%d对应&n,%s对应a:先读入整数,放到地址&n,再读入字符串,放到地址a;
printf("%d%s\n", n, a);
//输出n、a,换行char b[20];
int m;
cin >> m >> b;
//输入m、b
cout << m << b << endl;
//输出m、b,换行return 0;
}
解释:scanf 需要知道输入的数据需要存放的地址,因此:
- &n,得到n的地址 (&:取地址运算符)
- a是指针,指向数组a的起始地址
关于cin和cout为什么读入、输出整数和字符数组是一样的,请看这篇:输出运算符<<对char*的重载。
库函数举例 大部分与字符串操作相关的库函数,所需的参数类型都是char*的。
使用前提,包含头文件
# include
举例
#include
int main(){
char s1[100] = "12345";
char s2[100] = "abcdefg";
char s3[100] = "ABCDE";
strncat(s1, s2, 3);
//把s2前三个字符黏贴到s1尾部,\0挪到c后面
cout << "1) " << s1 << endl;
//1) 12345abc
strncpy(s1, s3, 3);
//如果s3的长度大于要拷贝的字节数,把s3前三个字符拷贝到s1里面,s1=“ABC45abc”
cout << "2) " << s1 << endl;
//2) ABC45abc
strncpy(s2, s3, 6);
//如果s3的长度小于要拷贝的字节数,s3的\0也会拷贝到s2里面,s2 =“ABCDE“
cout << "3) " << s2 << endl;
//3) ABCDE
cout << "4) " << strncmp(s1, s3, 3) << endl;
//4) 0比较s1 s3前三个字符,相等输出0//strtok
char str[] = "- I, am , pretty.";
//给定字符串str
p = strtok(str, " ,.-");
//把给定字符串的单词分离出来; " ,.-":用来分隔的字符(第一个字符是空格)
while (p != NULL){//只要p不为NULL,就说明找到了一个子串(单词)
cout << p << endl;
//输出子串
p = strtok(NULL, " ,.-");
//后续调用,第一个参数必须是NULL
}
return 0;
}
输出结果:
1) 12345abc
2) ABC45abc
3) ABCDE
4) 0
I
am
pretty
相关内容
- 什么是指针、内存地址和空指针
- 指针相关:交换两个变量的值(图解)
- 一维数组、二维数组与指针(reverse函数举例)
- 不同类型数组输出所有元素区别,输出运算符<<对char*的重载,输出字符数组地址
- void指针是什么、区别、作用(memset,memcpy函数举例)
推荐阅读
- C语言|C语言课程设计|学生成绩管理系统(含完整代码)
- c++|程序员怎么提高代码编写的速度()
- C语言|C 语言与指针 , 指针部分笔试题目及解析
- c语言|每天一练——牛客网基础语法(10)
- c语言|这可能是最全最详细的C语言指针基础教程
- C数据结构|C数据结构(哈夫曼树算法实现与应用)
- 纯C详解数据结构|详解线性表——顺序表【一看完,诶,发现我已经掌握顺序表核心了】
- 数据结构|数据结构(图(Graph)【详解】)
- Data|QUEUE——队列(procedure)