从0到1用代码入门C语言(四)

116 阅读2分钟

本文已参与 ⌈新人创作礼⌋ 活动,一起开启掘金创作之路。
本文已参与 ⌈新人创作礼⌋ 活动,一起开启掘金创作之路。

十、存储类别与内存管理

strlen()函数用于统计字符串的长度
strcat()函数用于接受两个字符串作为参数。
strncat()拼接两个字符串,防止溢出。
strcmp()用于字符串比较。
strncmp()比较字符串中的字符,直到发现不同的字符为止。
strcpy()/strncpy()字符串拷贝函数。
itoa()和ftoa()分别把整数和浮点数转换成字符串。可用sprintf()替代。
静态变量static:该变量在内存中原地不动
外部变量extern:针对同一个变量都引用同一个定义在函数外部的变量
rand():伪随机数生成器
rand0():生成随机数
srand1():重置种子
分配内存:malloc()和free(),调用时需要引入#include <stdlib.h>,此外还有calloc()函数分配内存
volatile限定符告知计算机,代理可以改变该变量的值
restrict关键字允许编译器优化某部分代码以更好地支持计算

十一、文件

打开文件的函数代码如下:

FILE *fopen(const char * filename,const char *mode)

关闭文件函数:

int fclose(FILE *fp);

文件举例说明:

#include <stdio.h>
int main()
{
    FILE *p=0;
    if((fp=fopen("/a/b.c","r"))==0)
    {
        printf("文件打开失败");
        return -1;
     }
     printf("fp=%p\n",fp);
     fclose(fp);
}

向文件中写入数据:

int fprintf(FILE *fp,const char *format,……)
#include <stdio.h>
int main()
{
    int i=0;
    FILE *p=0;
    fp=fopen("\a\b.c","w");
    if(fp==0)
    {
        printf("失败");
        return -1;
    }
    for(i=0;i<3;i++)
    {
        fprintf(fp,"This is the first num\n");
     }
     fclose(fp);
}

从文件中读取数据:

char *fgets(char *buf,int size,FILE *fp);
while(1)
{
    memset(buf,0,sizeof(buf));
    if(fgets(buf,301,fp)==0)
        break;
    printf("%s",buf);
}        
        

二进制文件读写:

size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
//ptr为内存区块指针
//size固定为1
//nmemb:表示打算写入数据的字节数
//fp:表示文件指针