
C字符串高级
字符逐个初始化:
发布日期:2021-05-14 23:42:27
浏览次数:8
分类:精选文章
本文共 3001 字,大约阅读时间需要 10 分钟。
C语言字符串和字符数组
字符串和字符数组的概念
在C语言中,字符串和字符数组的概念经常会被混淆,但它们实际上有着明显的区别。
- 字符串:在C语言中,字符串是以null terminator('\0')结尾的字符数组。数组中的每个元素存储一个字符,数组元素类型为
char
。 - 字符数组:字符数组是用来存放字符的数组,数组中每个元素存放一个字符。
字符串初始化方式
字符数组可以通过两种方式初始化:
char array[] = { 'a', 'b', 'c', 'd', '\0' };
- 数组长度为4(计算到null terminator前),实际占用5字节。
- 由于null terminator的存在,字符串的实际长度为4。
- 如果null terminator位于数组中间,后续字符将被忽略。
- 字符串常量初始化:
- 逐个输入输出:
- 整体输入输出:
- 字符串常量指针:
- 存储在数据段,不能修改。
- 数组指针:
-
输入输出函数:
puts(char *strPtr)
: 将字符串输出到标准输出。gets(char *strPtr)
: 从标准输入读取字符串。
-
字符串长度函数:
int strlen(char const *strPtr);
-
字符串拷贝函数:
char *strcpy(char *des, char *src);char *strncpy(char *des, char const *src, int size);
-
字符串连接函数:
char *strcat(char *str1, char const *str2);char *strncat(char *str1, char const *str2, int size);
-
字符串比较函数:
int strcmp(char const *str1, char const *str2);int strncmp(char const *str1, char const *str2, int size);
-
字符串分隔函数:
char *strtok(char *str, char const *delimiters);
-
字符串子串截取函数:
char *strstr(char *s1, char const *s2);
-
标准算术和随机数函数:
int abs(int value);long labs(long value);rand(void); // 生成伪随机数srand(unsigned int seed); // 设置随机数种子
-
数学函数:
double sin(double angle);int pow(double x, double y); // 指数函数
-
时间日期函数:
time_t time(time_t *date_time);char *ctime(const time_t clock); // 时间转换为字符数组
char array[] = "C program";
-编译器会在字符串末尾自动添加null terminator。 -字符串存放在数据段的常量区,无法进行写改操作。 -局部变量存放在栈区,静态变量或全局变量存放在数据段。
字符数组的输入输出
char a[10];scanf("%s", a);
char a[] = "hello";printf("%s\n", a);
指向字符串的指针
在C语言中,可以用指针来指向字符串:
char *ptr = "C Language";
char array[] = "hello";char *ptr = array; // ptr指向栈区中的字符串
字符串和字符数组示例
#include#include int main() { char local_array[5]; // 此处不初始化,值为随机 char array1[] = { 'h', 'e', 'l', '\0', 'l', 'o', '\0' }; char array2[] = "hello"; char array3[] = "hello"; char array4[5] = "hello"; char array5[6] = "hello"; printf("array1: %s size: %d length: %d\n", array1, sizeof(array1), strlen(array1)); printf("array2: %s size: %d length: %d\n", array2, sizeof(array2), strlen(array2)); printf("array3: %s size: %d length: %d\n", array3, sizeof(array3), strlen(array3)); printf("array4: %s size: %d length: %d\n", array4, sizeof(array4), strlen(array4)); printf("array5: %s size: %d length: %d\n", array5, sizeof(array5), strlen(array5));}
输出示例:
array1: hel size: 7 length: 3array2: hello size: 6 length: 5array3: hello size: 6 length: 5array4: hellohallo size: 5 length: 5array5: hello size: 6 length: 5
字符串函数
C语言提供了丰富的字符串处理函数,主要包括以下几类:
C标准库函数
案例:输入语句单词平均长度计算
#include#include int main() { char sentence[30] = {'\0'}; // 初始化为空字符串 printf("请输入一句话:"); fgets(sentence, sizeof(sentence), stdin); int total = strlen(sentence); int words = 0; int i; for (i = 0; i < total; ++i) { if (sentence[i] == ' ' && i != 0) { ++words; // 单词分隔判定 } } if (words == 0) { printf("请提供多于一个单词的输入\n"); return 0; } printf("平均单词长度:%.1f\n", (float)total / words); return 0;}
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月24日 13时05分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
微信小程序学习记录之WXML事件
2019-03-11
zabbix监控安装
2019-03-11
06-局部变量和全局变量
2019-03-11
12-面向对象1
2019-03-11
python 进程 线程 协程(通信方式)
2019-03-11
python基础总结 异常处理
2019-03-11
Python类和函数(私有变量、私有方法、变量作用域、继承和多态)
2019-03-11
【5G之道】第一章:介绍
2019-03-11
解决Vue源码运行错误
2019-03-11
HDU - 4109 Instrction Arrangement
2019-03-11
一行代码
2019-03-11
Lua websocket长连接
2019-03-11
SQL 分页查询 返回总条数
2019-03-11
重写的特点
2019-03-11
4、用户及文件权限
2019-03-11
富士电机漏洞预警
2019-03-11
【数据库】MySQL导入文件与导出文件
2019-03-11
计算机网络UDP协议和TCP协议
2019-03-11
Linux运行C语言文件
2019-03-11
C字符串高级
2019-03-11