【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数

这篇具有很好参考价值的文章主要介绍了【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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(%sin",c).

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

执行结果如图:

how are you
how are you

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系列字符串操作函数,掌握每个函数的内部实现.

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

#include <stdlo.h>
#include <string.h>

int mystrlen(char c[]){
int i = O;
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( "mystrlen len=%din", len);
strcat(c, d);
strcpy(d, c);//c中的字符串复制给d
puts(d);
printf("c?d %din", strcmp(c, d));
puts(c);
return O;
}

下图所示为我们输入"hello"后的执行结果,通过strlen 函数计算的字符串长度为5,我们自己写的函数就是strlen函数的计算原理,即通过判断结束符来确定字符串的长度.

strcpy函数用来将字符串中的字符逐个地赋值给目标字符数组.例中我们将c复制给d,就是将c中的每个字符依次赋值给d,也会将结束符赋值给d.注意,目标数组一定要大于字符串大小,即sizeof(d)>strlen©,否则会造成访问越界.

hello
hellolen=5
mystrlen len=5
helloworld
c?d 0
helloworld

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”).文章来源地址https://www.toymoban.com/news/detail-815816.html

到了这里,关于【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言基础考研向】05 scanf读取标准输入超详解

    文章目录 一.scanf函数的原理 样例 问题原因 解决方法 二.多种数据类型混合输入 错误样例 正确样例   C语言未提供输入/输出,其输入和输出是通过标准函数库来实现的。C语言通过scanf函数读取键盘输入, 键盘输入又被称为标准输入 。当scanf函数读取标准输入时,如

    2024年01月22日
    浏览(47)
  • 考研C语言刷题基础篇之数组(一)

    目录 第一题:用数组作为参数实现冒泡排序 不用函数的冒泡排序 冒泡排序原理: 错误的数值传参冒泡排序 错误的原因  就是什么是数组名 正确的数组传参的冒泡排序  数组的地址和数组首元素的地址的区别  冒泡排序原理: 一共经过n-1次排序:相邻之间两两作比较。交换

    2024年01月25日
    浏览(43)
  • 考研C语言刷编程题篇之分支循环结构基础篇(一)

    目录 第一题 第二题  方法一:要循环两次,一次求阶乘,一次求和。 注意:在求和时,如果不将sum每次求和的初始值置为1,那么求和就会重复。 方法二: 第三题 方法一:用数组遍历的思想  方法二用折半查找的思想 折半查找的思想  第四题 方法一:用两个变量,两个数

    2024年01月21日
    浏览(52)
  • 【C语言基础考研向】10 字符数组初始化及传递和scanf 读取字符串

    字符数组的定义方法与前面介绍的一维数组类似.例如, 字符数组的初始化可以采用以下方式. (1)对每个字符单独赋值进行初始化.例如, (2)对整个数组进行初始化.例如, 但工作中一般不用以上两种初始化方式,因为字符数组一般用来存取字符串.通常采用的初始化方式是

    2024年01月25日
    浏览(56)
  • gets和puts函数

    1.gets类似于scanf函数,用于读取标准输入。scanf函数在读取字符串时遇到空格就认为读取结束,所以当输入的字符串存在空格时,需要使用gets函数进行读取。 gets函数的格式如下: gets函数从标准输入中获取到字符并将其加载到str中,知道遇到换行符。当输入“how are you”,可

    2024年02月03日
    浏览(40)
  • C语言基础——函数

    函数是指将一组能完成一个功能或多个功能的语句放在一起的代码结构。在C语言程序中,至少会包含一个函数,及主函数main()。本章将详细讲解关于函数的相关内容。 C语言重要组成部分。本质是将一个语句块通过命名的方式独立出来。通过调用函数,可以实现对部分代码的

    2024年02月08日
    浏览(61)
  • C++语言基础——函数(详解)

    目录 函数是什么 函数的定义 主函数举例  空函数 函数的调用 语法格式 举例说明:计算x的n次方 递归 递归的主要点 递归的结构 条件 递归使用的场景 函数全名叫 计算机函数 ,它可以帮助你完成一些特定的程序。你可以把它简单理解成一把手枪。 手枪的作用: 完成几发子

    2024年01月21日
    浏览(56)
  • Go语言基础之函数

    Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属于“一等公民”。 函数定义 Go语言中定义函数使用func,具体格式如下: 其中: 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见

    2024年02月11日
    浏览(39)
  • 【C语言基础】:内存操作函数

             书山有路勤为径,学海无涯苦作舟。 创作不易,宝子们!如果这篇文章对你们有帮助的话,别忘了给个免费的赞哟~ 一、memcpy函数的使用和模拟实现 函数原型 : 内存复制块 将num字节的值从源指向的位置直接复制到目标指向的内存块。 源指针和目标指针所指向的对

    2024年04月11日
    浏览(38)
  • 【C语言基础】:字符函数和字符串函数

             书山有路勤为径,学海无涯苦作舟。 创作不易,宝子们!如果这篇文章对你们有帮助的话,别忘了给个免费的赞哟~ 1. 字符分类函数 C语言中有一系列的函数是对字符进行分类的,就是对判断一个字符属于什么类型的字符,这类字符函数的使用都要包含一个头文件

    2024年04月17日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包