当前位置: 首页 > news >正文

【C语言】输入输出、字符串操作、内存操作、文件操作函数

三对基本输入输出函数

1.gets(),puts()

gets()从标准输入中获取一个字符串,到str(自己创建的char型数组)中,读到换行或输入末尾结束获取r;

成功返回str,失败返回空。

char *gets(char *str);

puts()把一个字符串写入标准输出,直到读到\0;

成功返回字符串长度,包括\0,失败返回EOF。

int puts(const char *str);

2.getchar(),putchar()

getchar()从标准输入中获取一个字符;

成功返回字符阿斯克码值,没读到字符返回EOF;

int getchar(void);

putchar() 将一个字符写入标准输出;

成功返回要被写入的字符的阿斯克码,失败返回EOF;

int putchar(int char);

3.scanf(),printf()

scanf()从标准输入读取格式化输入;

成功返回匹配和赋值的个数,失败/读完返回EOF。

format是字符串

int scanf(const char *format, ...);

printf()发送格式化输出到标准输出;

成功返回写入的字符总数,否则返回一个负数

int printf(const char *format, ...);

常用格式字符:

a:16进制浮点数;x:16进制无符号整数;

d:10进制整数;o:8进制无符号整数;u:10进制无符号整数;

f:小数单、双精度实数;e:指数单、双精度实数(科学计数法)

c:字符;s:字符串;p:指针地址。


字符串操作函数

strcpy复制字符串

参数:

dest -- 指向用于存储复制内容的目标数组。

src -- 要复制的字符串。

返回值:

返回一个指向最终的目标字符串 dest 的指针

char *strcpy(char *dest, const char *src);

strcmp()比较字符串

        比较字符串每个字符的阿斯克码值。

参数:

str1 -- 要进行比较的第一个字符串。

str2 -- 要进行比较的第二个字符串。

n -- 要比较的最大字符数。

返回值:

返回值==0,str1==str2;

返回值<0,str1<str2;

返回值>0,str>str2。

int strncmp(const char *str1, const char *str2, size_t n);

strlen()求字符串长度

求长度遇到\0结束,不包含\0

        sizeof()是包含\0的

size_t strlen(const char *str);

strncpy最多复制n个字符

dest -- 指向用于存储复制内容的目标数组。

src -- 要复制的字符串。

n -- 要从源中复制的字符数

char *strncpy(char *dest, const char *src, size_t n);

strncmp比较字符串前n个字符

str1 -- 要进行比较的第一个字符串。

str2 -- 要进行比较的第二个字符串。

n -- 要比较的最大字符数。

int strncmp(const char *str1, const char *str2, size_t n);

strtok()字符串分割

str --字符串

delim --分隔符

每一次分割,将str中匹配到delim的字符换成\0,下一次分割从strtok(NULL,delim)开始

char *strtok(char *str, const char *delim);

strcat()字符串拼接

dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。

src -- 指向要追加的字符串,该字符串不会覆盖目标字符串。

返回指向dest的指针

char *strcat(char *dest, const char *src);

 mem系列函数

常用的:memcpy,memcmp,memset

mem系列对比str系列:str只能用于char型,mem可以给所有类型用

memcpy复制

从存储区 str2 复制 n 个字节到存储区 str1

void *memcpy(void *str1, const void *str2, size_t n);

 memcmp比较

把存储区 str1 和存储区 str2 的前 n 个字节进行比较,返回值同strcmp。

int memcmp(const void *str1, const void *str2, size_t n);

 memset设置n个c(多用于清空)

 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。

void *memset(void *str, int c, size_t n);

上述函数使用: 

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
int main()
{char a[20] = "123456789";char b[20] = "";int arr[5] = { 1,2,3,4,5 };int arrb[5];printf("将a中三个字符复制到b\n");strncpy(b, a, 3);puts(b);printf("将a中五个个数据复制到b\n");memcpy(b, a, 5);puts(b);printf("将arr中五个数据复制到brr\n");memcpy(arrb, arr, 5 * sizeof(int));printf("清空b\n");memset(b, 0, 20);puts(b);//清空arr// memcpy(arr, 0, sizeof(int) * 5);memset(arr, 0, sizeof(int) * 5);printf("将abc连接到a字符串后面\n");strcat(a, "abc");puts(a);
}


文件操作函数

开fopen,关fclose;读fread,写fwrite;

取字符fgetc,fputc;fgets,fputs;fscanf,fprintf;fseek,ftell;rewind;

fseek()

  • stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
  • offset -- 这是相对 whence 的偏移量,以字节为单位。
  • whence -- 这是表示开始添加偏移 offset 的位置。它一般指定为下列常量之一:
int fseek(FILE *stream, long int offset, int whence);

ftell()返回当返回给定流 stream 的当前文件位置

  • stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
long int ftell(FILE *stream);

rewind() 设置文件位置为给定流 stream 的文件的开头

long int ftell(FILE *stream);

http://www.lryc.cn/news/61461.html

相关文章:

  • [golang gin框架] 25.Gin 商城项目-配置清除缓存以及前台列表页面数据渲染公共数据
  • 文件夹改名,如何在改名之后批量复制文件夹名称
  • 汇编与内联 x86-64
  • OSCP-UT99(IRC、Unreal Tournament 99)
  • Kubernetes CPU内存资源限定
  • fitlog使用教程(持续更新ing...)
  • Linux下搭建Go开发环境
  • 一文搞懂SQL注入攻击
  • CCTV-TIME特别关注:首届医药港国际健康美食文化嘉年华
  • FE_TA不知道的CSS 换行系列【1】white-space
  • matlab中计算标准差std函数
  • 【操作系统】原语操作详解
  • mongDB的相关查询插入操作
  • 【C++初阶】C++入门(二):引用内联函数auto关键字范围for循环(C++11)指针空值nullptr
  • 地下污水厂智能照明控制应用
  • IS220UCSAH1A利用电子和空穴两种载流子导电的,所以叫做双极型电路
  • 干货|英国专利申请
  • springboot文件上传
  • 天龙八部手游服务端架设搭建教程
  • Windows 服务监控工具
  • 零基础抽象轻松MYSQL
  • 区块链赛项样题解析
  • 基于Java+SpringBoot+vue+element疫情药品采购出入库系统设计实现
  • 【C++】5. 引用
  • 初识C++(二)
  • 编译时报Clang SA is not enabled问题解决
  • 【论文阅读】You Are What You Do:通过数据来源分析寻找隐蔽的恶意软件
  • c#期末复习题重点难点题
  • Sass @mixin 与 @include
  • ROS——Teb算法的优化