三对基本输入输出函数
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);