C语言枚举、共用体与文件类型小Tip

发布时间:2024年01月11日

(1)不同进制的赋值:

#include<stdio.h>
int main()
{
    int m=011;
    printf("%d\n",++m);
    return 0;
}

输出为:10

因为此时m以0开始,为八进制数011也就是十进制9,同理,若以0x开头就为16进制数。

(2)枚举类型:

#include<stdio.h>
int main()
{
    enum W{s=7,m=1,t,w,th,fr,sa};
    enum W a=s,b=sa;
    printf("%d,%d\n",a,b);
    a=t,b=w;
    printf("t=%d,w=%d\n",a,b);
    a=th,b=fr;
    printf("th=%d,fr=%d\n",a,b);
    return 0;
}

输出结果:

7,6
t=2,w=3
th=4,fr=5

枚举类型的赋值,如果没有直接定义,默认逐个往后递增。

(3)共用体类型:

#include<stdio.h>
int main()
{
    union
    {
        short a[2];
        short b,c;
    }u;
    u.a[0]=10;u.a[1]=20;
    printf("%d,%d,%d\n",sizeof(u),u.c,u.b);
    printf("%d",sizeof(short));
    return 0;
}

输出结果:

4,10,10
2

short类型占用两个字节为int类型的一半,公用体所占用的空间与结构中占用空间最大的元素相同。多个数据公用一个内存,且每次修改会将先前的所有数据覆盖。

(4)文件类型:

#include<stdio.h>

int main()
{
    FILE *fp;
    int i,len1,len2;
    char ch[]="20211224";
    fp=fopen("abc.dat","wb");
    for(i=0;i<8;i++)
        fwrite(&ch[i],1,1,fp);
    len1=ftell(fp);
    fseek(fp,-3L,SEEK_END);
    len2=ftell(fp);
    printf("%d,%d\n",len1,len2);
    fclose(fp);
    fp=fopen("abc.dat","r");
    char k=fgetc(fp);
    fgets(ch,5,fp);
    printf("%c,%s",k,ch);
    fclose(fp);
    return 0;
}

输出结果:

8,5
2,0211

fseek可以强制使文件标记指向指定的位置。fseek(文件类型指针,位移量,起始点),位移量应该是long型数据(数字末尾加一个L),正数表示向前移动,负数表示向后移动(向前指顺着文件读写的方向)。

ftell函数测定流式文件位置标记指向的当前位置。最开始未读写时,fp的位置是0。

文章来源:https://blog.csdn.net/Xm041206/article/details/135514242
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。