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

简介: 本文介绍了C语言中的`gets`和`puts`函数,`gets`用于从标准输入读取字符串直至换行符,并自动添加字符串结束标志`\0`。`puts`则用于向标准输出打印字符串并自动换行。此外,文章还详细讲解了`str`系列字符串操作函数,包括统计字符串长度的`strlen`、复制字符串的`strcpy`、比较字符串的`strcmp`以及拼接字符串的`strcat`。通过示例代码展示了这些函数的具体应用及注意事项。

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(c),否则会造成访问越界.

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(c)>strlen(“helloworld”).

相关文章
|
20天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
39 10
|
20天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
42 9
|
20天前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
41 6
|
20天前
|
存储 C语言
【C语言】输入/输出函数详解
在C语言中,输入/输出操作是通过标准库函数来实现的。这些函数分为两类:标准输入输出函数和文件输入输出函数。
115 6
|
20天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
49 6
|
7月前
|
存储 C语言
C 语言函数完全指南:创建、调用、参数传递、返回值解析
函数是一段代码块,只有在被调用时才会运行。 您可以将数据(称为参数)传递给函数。 函数用于执行某些操作,它们对于重用代码很重要:定义一次代码,并多次使用。
223 3
|
2月前
|
C语言
C语言函数返回值详解
本文详细解析了C语言中函数返回值的概念与应用。从函数的基本定义入手,深入探讨了不同类型返回值的作用及意义,并提供了实用的编程示例,帮助读者更好地理解和使用函数返回值。通过本文,你将掌握如何有效利用返回值优化代码结构与功能实现。
|
6月前
|
存储 C语言
C语言的函数返回值和指针
C|函数返回值(区分各类值)和指针(区分各类存储空间)的细节
|
C语言
C语言---函数---知识点总结(三)------函数的返回值类型
C语言---函数---知识点总结(三)------函数的返回值类型
|
7月前
|
存储 C语言
C语言中向函数传递值和从函数返回值的技术解析
C语言中向函数传递值和从函数返回值的技术解析
78 0

热门文章

最新文章

下一篇
DataWorks