C语言程序设计:gets函数详解与示例

需积分: 6 0 下载量 133 浏览量 更新于2024-08-24 收藏 256KB PPT 举报
"这篇资源是关于C语言中字符串输入函数gets的使用,主要来自华中科技大学计算机学院的课程资料,由曹计昌教授讲解。课程涵盖了C语言的基础输入输出功能,包括putchar、puts、printf等输出函数以及getchar、gets、scanf等输入函数,并涉及数据转换函数的应用。在示例代码中,展示了如何使用gets函数输入和输出字符串。" 在C语言中,`gets`函数是用来从标准输入(通常是键盘)读取一行文本到字符串中的。它的声明如下: ```c char *gets(char *str); ``` `gets`函数接收一个字符数组作为参数,这个数组用于存储输入的字符串。函数会读取用户输入直到遇到换行符或者文件结束符,并将这些字符存入数组中。需要注意的是,`gets`不会自动在字符串末尾添加空字符`\0`来表示字符串结束,因此需要确保提供的字符数组足够大,能容纳整个输入的字符串加上结束符。如果输入的字符串长度超过数组大小,可能会导致缓冲区溢出,这是非常危险的,因为它可能导致程序崩溃或安全漏洞。 在给出的示例代码中: ```c #include "stdio.h" void main(void) { char a[81], b[81], *p = b; gets(a); gets(p); puts(a); puts(p); } ``` 首先定义了两个长度为81的字符数组`a`和`b`,并用指针`p`指向`b`。然后使用`gets`函数分别读取两行输入,第一行存入`a`,第二行存入`b`(通过指针`p`)。最后,使用`puts`函数输出这两行输入。`puts`函数会打印字符串并自动在末尾添加换行符。 在描述的运行结果中,用户输入了两行文本:"this is a book." 和 "that is a pen.",`gets`函数成功地将这两行输入存入了数组,并通过`puts`输出。然而,由于没有检查输入长度,如果输入过长,可能会导致超出数组边界的问题。 除了`gets`之外,C语言还提供了其他输入函数,如`scanf`,它可以更灵活地处理格式化输入,但同样需要注意防止缓冲区溢出。在输出方面,`printf`是一个强大的格式化输出函数,可以处理各种类型的数据并按照指定格式输出。 在课程中,还提到了一些基本的输出函数,例如`putchar`用于输出单个字符,`puts`用于输出字符串(自动添加换行符),以及`printf`用于格式化输出。每个函数都有其特定的使用场景和优势,学习和理解这些函数是掌握C语言基本输入输出的关键。同时,课程也提及了数据转换函数,如`atof`、`atoi`、`atol`等,这些函数用于在不同数据类型之间进行转换,对于编写处理不同类型数据的程序至关重要。