700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言中的字符串输入输出函数

C语言中的字符串输入输出函数

时间:2018-05-22 03:43:17

相关推荐

C语言中的字符串输入输出函数

1. 字符串输入(gets、fgets、gets_s、scanf)

a. 分配内存空间a. 静态内存分配○ 指的是在编译时确定数组等数据类型的大小,然后由计算机分配好○ 在声明数组时要显式的声明数组的大小,为字符串的输入分配内存空间○ char name[81];b. 动态内存分配○ 通俗一点就是向计算机要内存空间,是在程序运行时,再向计算机要内存○ 一般是用malloc函数§ #include<stdlib.h>§ void* malloc(size_t size);§ 利用malloc申请到的内存空间是以字节为单位的,返回的结果是void *,一般需要类型转换为自己需要的类型号int *a;a=(int*)malloc(n*sizeof(int)); //本语句的意思就是通过malloc函数向计算机申请一块内存空间,这个空间的大小是n*sizeof(int),返回的是一个void*类型的指针,也就是一个指向未知类型数据的地址,之后再把这个指针转化为我们需要的类型---int *。§ 与申请内存空间相对应的就是释放内存空间free()□ free(a);□ 只能还申请来的空间的首地址§ 如果申请失败了就会选择返回0或者是NULLb. gets()○ gets()函数只是知道分配的内存空间的地址,但是不知道分配的内存空间有多大,也即是有可能会造成缓存区溢出问题○ 读取整行数据,直至遇到换行符○ gets函数会将读进的换行符丢掉c. fgets()函数(通常是最佳选择)○ fgets(缓冲区地址,读入字符最大值,提供字符串的文件)○ fgets知道要分配的内存地址和内存空间的最大值,以及字符串数据的来源(文件),如果在控制台读入,则用stdin。○ fgets()将读入n-1字符或者遇到第一个换行符为止○ fgets把换行符放在字符串末尾○ 该函数函数返回的地址与传入的第 1 个参数相同

#include <stdio.h>#define SIZE 10int main(){char words[SIZE];puts("Enter string:");while (fgets(words, SIZE, stdin) != NULL && words[0] != '\n') {fputs(words, stdout);}puts("Done");return 0;}//如果读到文件结尾或者空行时就会退出//在本例中,fgets的返回值一直都不是NULL//fgets()读取字符为(SIZE-1)个即停止,或者读取到第一个‘\n’即可

○ fputs(数据来源,要写入的文件)○ fputs知道数据来源和数据要写入到哪个文件,如果是写入到控制台,则用stdout○ 数据来源有什么就会写什么,不会自动添加换行符d. gets_s()函数也可以用于替代gets○ gets_s(argu1,argu2)§ argu1是存储位置,argu2是最大字符数○ 和gets()一样,读到换行符时,会把换行符丢弃掉e. scanf()○ scanf函数确定字符串末尾的方法是○ 从非空白开始直至遇到第一个空白字符(包括空行、空格、制表符、换行符)○ 若指定字段宽,则将满足字宽和第一个空白字符“做或逻辑”--->满足即可○ 若上一次读取键盘输入没有读完,下一次读取会从上次调用函数结束的地方开始

2. 字符串输出:puts()、fputs()、printf()

a. puts(argu1)函数a. argu1:输出字符串的地址b. puts函数会在输出字符串的末尾自动加上换行符c. 遇到空字符就会停止输出---因此必须确保要有空字符d. 如果没有空字符,那么puts会继续打印内存中后面的字符直至遇到空字符b. fputs(argu1,argu2)函数a. argu1:输出字符地址;argu2:要写入数据的文件(打印在显示器用stdout)b. 不在末尾添加换行符号c. printf()函数a. 不在末尾加换行符号b. 打印多个字符串更加简单

3. 自定义输入输出函数

a. 利用putchar,getchar,while循环等自定义输入输出函数

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。