1.gets和puts函数

gets函数:用于读取比准输入,类比scanf()函数。
scanf()函数在读字符串时遇到空格就终止读取了
如果要连空格一起读,需要用到gets函数

gets函数格式如下:

char *gets(char *str);

gets 函数从 STDIN(标准输入)读取字符并把它们加载到 str(字符串)中,直到遇到换行符(\n)。
如下例所示,执行后,我们输入"how are you",共 11 个字符,
可以看到 gets 会读取空格,同时可以看到我们并未给数组进行初始化赋值,但是最后有’\0’,
这是因为 gets 遇到\n 后,不会存储\n,而是将其翻译为空字符’\0’。

puts 函数:类似于 printf 函数,用于输出标准输出。puts 函数的格式如下:

int puts(char *str);

函数 puts 把 str(字符串)写入 STDOU(标准输出)。
puts 会将数组 c 中存储的"how are you"字符串打印到屏幕上,同时打印换行,相对于 printf 函数,puts 只能用于输出字符串,同时多打印一个换行符,等价于 printf(“%s\n”,c)。

#include <stdio.h>
//gets 一次读取一行
int main()
{char c[20];
gets(c);
puts(c);
return 0;
}

2.str 系列字符串操作函数

str 系列字符串操作函数主要包括 strlen、strcpy、strcmp、strcat 等
strlen 函数:用于统计字符串长度,
strcpy 函数:用于将某个字符串复制到字符数组中
strcmp 函数:用于比较两个字符串的大小,
strcat 函数:用于将两个字符串连接到一起。
各个函数的具体格式如下所示:

#include <string.h>
size_t strlen(char *str);
char *strcpy(char *to, const char *from);
int strcmp(const char *str1, const char *str2);
char *strcat(char *str1, const char *str2);

对于传参类型 char*,直接放入字符数组的数组名即可。

【例】str 系列字符串操作函数的使用

#include <stdio.h>
#include <string.h>
int mystrlen(r char c[]) {int i = 0;
while (c[i++]);
return i - 1;
}
//strlen 统计字符串长度
int main() {int len; //用于存储字符串长度
char c[20];
char d[100] = "world";
gets(c);
puts(c);
len = strlen(c);
printf( "len=%d \n" ", len);
len = mystrlen(c);
printf(n "mystrlen len=%d \n" ", len);
strcat(c, d);
strcpy(d, c); //c 中的字符串复制给 d
puts(d);
printf(d "c?d %d \n" ", strcmp(c, d));
puts(c);
return 0;
}

下图所示为我们输入"hello"后的执行结果,
通过 strlen 函数计算的字符串长度为 5,
我们自己写的函数就是 strlen 函数的计算原理,即通过判断结束符来确定字符串的长度。
strcpy 函数用来将字符串中的字符逐个地赋值给目标字符数组。
例中我们将 c 复制给 d,
就是将 c 中的每个字符依次赋值给 d,也会将结束符赋值给 d。
注意,目标数组一定要大于字符串大小,即 sizeof(d)>strlen©,否则会造成访问越界.


strcmp 函数用来比较两个字符串的大小
由于字符数组 c 中的字符串与 d 相等,所以这里的返回值为 0。
如果 c 中的字符串大于 d ,那么返回值为 1;
如果 c 中的字符串小于 d,那么返回值为−1。
如何比较两个字符串的大小呢?
具体操作是从头开始,比较相同位置字符的 ASCII码值,
若发现不相等则直接返回,否则接着往后比较。
例如,strcmp(“hello”,“how”)的返回值是−1,即"hello"小于"how",
因为第一个字符 h 相等,
接着比较第二个位置的字符,e 的 ASCII 码值小于 o 的,然后返回−1。
strcat 函数用来将一个字符串接到另外一个字符串的末尾。
例中字符数组 c 中存储的是"hello",
我们将 d 中的"world"与 c 拼接,最终结果为"helloworld"。
注意,目标数组必须大于拼接后的字符串大小,即 sizeof©>strlen(“helloworld”)。

gets与puts的使用,Str系列字符串的使用相关推荐

  1. C语言之字符串探究(五):N系列字符串函数——strncpy、strncat、strncmp

    相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...

  2. c语言str系列函数

    qsort() str系列函数 isalpha() 1,qsort() 功能: 快速排序,其时间复杂度为n*log(n) 头文件: <stdlib.h> 声明: void qsort(vo ...

  3. python3.6 str.replace() 字符串替换方法

    python3.6 str.replace() 字符串替换方法 源码 def replace(self, old, new, count=None): # real signature unknown ...

  4. C语言str系列库函数

    C语言str系列库函数在不同的库中有不同的实现方法,但原理都是一样的.因为库函数都是没有进行入口参数检查的,并且str系列库函数在面试中经常容易被面试官喊在纸上写某一个函数的实现,因此本文参考了Ope ...

  5. str python3_python3 str(字符串)

    __add__函数 (在后面追加字符串) s1 ='Hello's2= s1.__add__('boy!')print(s2)#输出:Hello boy! __contains__(判断是否包含某字符 ...

  6. python3 str bytes 字符串 字节 互相转换

    1.字符串转成bytes:str.encode('utf-8') 示例1: >>>'abc'.encode('utf-8')>>>b'abc'>>> ...

  7. C/C++中的str系列函数大全

    目录 1.strlen函数 2.strcpy函数 3.strcat函数 4.strncat函数 5.strcmp函数 6.strimp函数 7.strncmp函数 拓展: (1)strnicmp函数 ...

  8. C语言str系列函数操作

    1.strcpy ①函数原型:char * strcpy(char * destination,const char * source); ②作用:将source指向的C字符串复制到destinati ...

  9. python 中list(列表),tupe(元组),str(字符串),dict(字典)之间的相互转换

    1.字典(dict) dict = {'name': 'Zara', 'age': 7, 'class': 'First'} 1.1 字典--字符串 返回: print type(str(dict)) ...

最新文章

  1. numpy向量转换为矩阵_干掉公式——numpy 就该这么学
  2. 删除oracle数据库归档日志,Oracle数据库--删除归档日志
  3. vrml场景实例代码_高并发的中断下半部tasklet实例解析
  4. 十、Go协程的调度,互斥锁,计数器和线程池
  5. airplay2协议是什么_什么是AirPlay?
  6. (90)AXI突发式读写时序和过程
  7. SQL 2008 FileStream数据类型
  8. 拓端tecdat|R语言Black Scholes和Cox-Ross-Rubinstein期权定价模型案例
  9. java 另存为文本_Java代码复制所有文本,同时将大写字母从一个文本文件转换为另一个文本文件中的小写字母...
  10. CMD命令行查询电脑硬件信息
  11. docker编配和服务发现
  12. NYOJ题目54 小明的存钱计划
  13. 《反脆弱边缘:反脆弱实践》访谈
  14. ZUCC_Object Oriented Programming_Lab01 Introduction to Java
  15. 关于web中的颜色表示方法,你知道多少?
  16. 高德地图车机版增加地标性品牌图标 让你“约会”无压力
  17. SIMCom常见模组外围电路设计
  18. 非华为电脑管家连接平板--无法连接问题解决方案之一
  19. 消失的预测、陨落的交叉熵
  20. unity 植物大战僵尸怎么做

热门文章

  1. 32.0.概率论与数理统计-依概率收敛,切比雪夫不等式
  2. 日常学习——记使用POI多线程写Excel数据(续)
  3. H5分享页面背景音乐及播放视频
  4. 我理解的「向下兼容」
  5. 【K8S专栏】Kubernetes工作负载管理
  6. 腾讯云cos html,腾讯云对象存储(COS)插件安装设置图文教程
  7. Delphi ord 函数
  8. DAO是什么?——为什么有人试图购买美国宪法?
  9. 往往是认知决定你的人生格局
  10. c语言调用oracle存储过程,Oracle存储过程