【C语言常用函数】

一、字符串函数

C标准库:string.h。

1、strlen函数——计算字符串长度

函数定义:

size_t strlen(const char *_Str);

strlen(字符串a)函数计算字符串长度,包括空格和转义字符。
示例:

#include <stdio.h>
#include <string.h>
char a[] = "Hello World\n";
int x;
int main()
{
    x = strlen(a);
    printf("Length x = %d", x);
}

输出打印:

Length x = 12

2、strcpy——复制字符串

函数定义:

char* strcpy(char * __restrict__ _Dest,const char * __restrict__ _Source);

strlen(字符串1,字符串2)函数可以把字符串2中的内容复制到字符串1中。
示例:

#include <stdio.h>
#include <string.h>
char a[] = "Hello World\n";
char x[20];
int z;
int main()
{
    strcpy(x, a);
    printf("String x = %s", x);
    printf("Length z = %lld", strlen(x));
}

输出打印:

String x = Hello World

这里x的长度还是12。

3、strcat——字符串连接

函数定义:

char* strcat(char * __restrict__ _Dest,const char * __restrict__ _Source);

strlen(字符串1,字符串2)函数可以把字符串2和字符串1连接成新的字符串放在字符串1中。
示例:

#include <stdio.h>
#include <string.h>
char a[] = "Hello World\n";
char x[] = "I am back\n";
int z;
int main()
{
    strcat(a, x);
    printf("String a =\n%s", a);
    printf("Length z = %lld", strlen(a));
}

输出打印:

String a =
Hello World
I am back
Length z = 22

4、strcmp——字符串比较

函数定义:

int __cdecl strcmp(const char *_Str1,const char *_Str2);

strlen(字符串1,字符串2)函数可以比较两个字符串是否相同,相同返回
示例:

#include <stdio.h>
#include <string.h>
char a[] = "Hello World\n";
char b[] = "Hello World\n";
char x[] = "I am back\n";
int z, z1, z2;
int main()
{
    z = strcmp(a, x);
    z1 =strcmp(x, a);
    z2 =strcmp(a, b);
    printf("z = %d\nz1 = %d\nz2 = %d", z, z1, z2);
}
输出打印:
z = -1
z1 = 1
z2 = 0

二、文件操作函数

C标准库:stdio.h,返回值EOF就是整数-1。

1、fopen——打开文件

函数定义:

  FILE *__cdecl fopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;

fopen(文件名,打开模式)函数用来打开一个文件,打开成功返回一个指向该文件的指针*fp,打开失败则返回NULL(打开失败的原因一般是打开模式不对或者文件不存在)。
示例:

#include <stdio.h>
FILE *fp;
int sta;
int main(){
    fp = fopen("test.txt", "w+");
    if (fp != NULL)
    {
        sta = fputs("Hello World\nI am back!", fp);
        printf("%d\n", sta);
        fclose(fp);
    }
    else
    {
        printf("文件打开失败");
    }
    return 0;
}

文件打开模式:
“r”——以“只读”方式打开文件。只允许读取,不允许写入。文件必须存在,否则打开失败。
“w”——以“写入”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
“a”——以“追加”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。
“r+”——以“读写”方式打开文件。既可以读取也可以写入,也就是随意更新文件。文件必须存在,否则打开失败。
“w+” ——以“写入/更新”方式打开文件,相当于w和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。
“a+”——以“追加/更新”方式打开文件,相当于a和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。

2、fclose——关闭文件

函数定义:

  int fclose(FILE *_File);

fclose(文件指针)函数用来关闭一个文件,关闭成功返回0,关闭失败返回EOF(关闭失败的原因可能是磁盘内存满)。
示例:

#include <stdio.h>
FILE *fp;
int sta, sta1;
int main(){
    fp = fopen("test.txt", "w+");
    if (fp != NULL)
    {
        sta = fputs("Hello World\nI am back!", fp);
        printf("sta = %d\n", sta);
        sta1 = fclose(fp);
        printf("sta1 = %d", sta1);
    }
    else
    {
        printf("File open failed");
    }
    return 0;
}

输出打印:

sta = 0
sta1 = 0

3、fputc——写入字符

函数定义:

  int fputc(int _Ch,FILE *_File);

fputc(int型字符,文件指针)函数用来向文件写入一个字符写入到文件中,写入成功返回该字符的ASCII值,写入失败返回EOF。
示例:

#include <stdio.h>
FILE *fp;
int sta;
int main(){
    fp = fopen("test.txt", "w+");
    if (fp != NULL)
    {
        sta = fputc('M', fp);
        printf("sta = %d\n", sta);
        fclose(fp);
    }
    return 0;
}

输出打印:

sta = 77

4、fgetc——读取字符

函数定义:

  int fgetc(FILE *_File);

fgetc(文件指针)函数用来读取一个字符,读取成功返回该字符的ASCII值,读取失败返回EOF。
示例:

#include <stdio.h>
FILE *fp;
int sta;
int c;
int main(){
    fp = fopen("test.txt", "r");
    if (fp != NULL)
    {
        c = fgetc(fp);
        printf("%c", c);
        fclose(fp);
    }
    return 0;
}

这里我们test.txt文件存放的是"Hello World\nI am back!",所以读取到H。

5、fputs——写入字符串

函数定义:

  int fputs(const char * __restrict__ _Str,FILE * __restrict__ _File);

fputs(字符串指针,文件指针)函数用来向文件写入一个字符串,写入成功返回0,写入失败返回EOF(写入失败一般原因是模式不对比如只读模式r)。
示例:

#include <stdio.h>
FILE *fp;
int sta, sta1;
int main(){
    fp = fopen("test.txt", "w+");
    if (fp != NULL)
    {
        sta = fputs("Hello World\nI am back!", fp);
        printf("sta = %d\n", sta);
        sta1 = fclose(fp);
        printf("sta1 = %d", sta1);
    }
    else
    {
        printf("File open failed");
    }
    return 0;
}

输出打印:

sta = 0
sta1 = 0

6、fgets——读取字符串

函数定义:

fgets (char *__restrict__ __s, int __n, FILE *__restrict__ __stream)

fgets(目标字符串的指针,最大读取数量,文件指针)函数用来读取一个字符串,读取成功返回该字符串,读取失败返回EOF。
示例:

#include <stdio.h>
FILE *fp;
char str[30];
int main(){
    fp = fopen("test.txt", "r");
    if (fp != NULL)
    {
        fgets(str, 3, fp);
        printf("%s", str);
        fclose(fp);
    }
    return 0;
}

输出打印:

He

这里函数参数最大读取数为n,实际上只会读取n-1个字符输出为字符串,因为会自动将最后一个字符替换为’\0’。

7、fprintf——格式化写入

函数定义:

int fprintf (FILE *__stream, const char *__format, ...)

fprintf(文件指针,写入格式,写入内容)函数用来向文件写入数据,这里用写入一个结构体为例:
其实,printf函数只是将输出流这个参数默认为stdout,如果我们使用fprintf函数时,将第一个参数写为stdout,那它和printf函数的功能是一模一样的。
示例:

#include<stdio.h>
struct Stu
{
    char name[20];
    int num;
    float score;
};
int main()
{
    struct Stu s = { "zhangsan",20220405,73.66 };
    FILE* pf = fopen("test.txt", "w");//以写的形式打开文件
    if (pf == NULL)
    {
        perror("fopen fail:");
        return -1;
    }
    //将数据写入文件:
    fprintf(pf, "%s %d %.2f", s.name, s.num, s.score);
    //将写入文件的数据显示在屏幕上:
    fprintf(stdout, "%s %d %.2f", s.name, s.num, s.score);

    //关闭文件:
    fclose(pf);
    pf = NULL;
    return 0;
}

输出打印:

zhangsan 20220405 73.66

8、fscanf——格式化输出

函数定义:

extern int fscanf (FILE *__restrict __stream,
		   const char *__restrict __format, ...) __wur;

fscanf(文件指针,输出格式,目标参数)函数用来格式化读取函数,遇到空格和换行时结束。
示例:

#include <stdio.h>

FILE *fp;
int sta;
char buffer[50];

int main(){
    fp = fopen("test.txt", "w+");
    fputs("Hello World\nI am back!", fp);
    fclose(fp);
    fp = fopen("test.txt", "r");
    sta = fscanf(fp, "%s", buffer);
    printf("sta = %d\n", sta);
    printf("buffer = %s\n", buffer);
    fclose(fp);
    return 0;
}

9、fread——读取文件

函数定义:

  size_t __cdecl fread(void * __restrict__ _DstBuf,size_t _ElementSize,size_t _Count,FILE * __restrict__ _File);

fread(目标参数指针,单位数据大小,数据个数,文件指针);返回值是数据个数count。

10、fwrite——写入文件

函数定义:

extern size_t fwrite (const void *__restrict __ptr, size_t __size,
		      size_t __n, FILE *__restrict __s);

fwrite(源数据指针,单位数据大小,数据个数,文件指针);返回值是数据个数count。
注意:
fread / fwrite 函数既可以操作二进制文件 , 又可以操作文本文件 ;
getc / putc 函数 , fscanf / fprintf 函数 , fgets / fgets 函数 , 只能用于操作文本文件 。

11、fseek——移动文件指针

函数定义:

extern int fseek (FILE *__stream, long int __off, int __whence);

int __whence 表示文件指针起始位置:
文件头 SEEK_SET 0;当前位置 SEEK_CUR 1;文件尾 SEEK_END 2
int __off 表示偏移量
如果执行成功 , 则返回 0 , 失败返回非 0 , 并设置 error 错误代码。
示例:

#include <stdio.h>

FILE *fp;
int sta;
char buffer[50];

int main(){
    fp = fopen("test.txt", "r");
    fseek(fp, 2, SEEK_SET);
    fread(buffer, 8, 1, fp);
    printf("buffer = %s\n", buffer);
    fclose(fp);
    return 0;
}

输出打印:

buffer = llo Worl

注意:偏移量offset为正表示向右偏移,为负表示向左偏移。

12、rewind——重置文件指针

函数定义:

extern void rewind (FILE *__stream);

随着文件的读写,文件指针向后移动;rewind(文件指针)函数用来重置文件指针到开头位置。

13、ftell——获取当前文件指针相对于文件首地址的偏移字节数

函数定义:

extern __off_t ftello (FILE *__stream);

ftell(文件指针)函数用来获取当前文件指针相对于文件首地址的偏移字节数。

三、内存管理函数

C标准库stdlib.h

1、malloc——动态申请内存

函数定义:

extern void *malloc (size_t __size);

malloc(size)函数用来申请长度为size字节的内存;返回指向这段内存的指针,如果申请失败则返回空指针NULL(可能内存不足)。

2、realloc——动态申请内存

函数定义:

extern void *realloc (void *__ptr, size_t __size)

realloc(内存指针,size)函数用来在原内存的基础上追加申请总长度为size字节的内存。

3、calloc——动态申请内存

函数定义:

extern void *calloc (size_t __nmemb, size_t __size)

calloc(size)函数用来申请长度为size字节的内存并全部初始化为0。

4、free——释放内存

函数定义:

extern void free (void *__ptr)

free(内存指针)函数用来释放malloc、realloc、calloc申请的内存。
注意:
在释放内存后,必须把指针指向 NULL,否则内存指针*p可能会再次被使用导致程序出错。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值