C语言-结构体,文件操作

87 阅读2分钟

1、结构体

结构体统一取别名,兼容多平台编译器

  /**
 * 结构体
 * 统一别名Student
 */
typedef struct {
    char name[10];
    int age;
    char sex;

} Student;


int main() {
    Student  student = {"daxiaa",29,'M'};
    printf(" value is %s,%d,%s",student.name,student.age,student.sex);
    return 0;
}

2、结构体指针

注意结构体指针采用->访问属性

   Student * student2 = {"daxiaa",29,'M'};
   printf(" value is %s,%d,%s",student2->name,student2->age,student2->sex);

3、文件操作

  • 读文件

int main() {
    // fopen打开文件的意思(参数1:文件路径 文件源,  参数2:模式 r(读) w(写)  rb(作为二进制文件读) rw(作为二进制文件写)  返回值 FILE 结构体)
    // FILE * fopen (const char *, const char *);

    char *fileNameStr = "D:\\Temp\\daxiaa.txt";
    //读文件
    readFile(fileNameStr);
    return 0;
}

void readFile(char *fileNameStr) {
    // 既然是使用了r,你要提前准备好文件
    FILE *file = fopen(fileNameStr, "r");
    if (!file) {
        printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);
        exit(0); // 退出程序
    }
    // 先定义缓存区域 (容器)
    char buffer[10];
    // 1.缓冲区buffer, 2:长度10, 3:文件指针变量
    while (fgets(buffer, 10, file)) {
        printf("%s", buffer);
    }
    // 关闭文件
    fclose(file);

}
i am daxiaa
  • 写文件
/**
 * 写文件
 * @param fileNameStr
 */
void wirteFile(char *fileNameStr) {
    // 既然是使用了w,他会自动生成文件 0kb
    FILE * file = fopen(fileNameStr, "w");

    if (!file) {
        printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);
        exit(0); // 退出程序
    }

    fputs("Derry Success run...", file);

    // 关闭文件
    fclose(file);

}
  • 制复制文件
void copy() {
    FILE *r_file = fopen("D:\\Temp\\daxiaa.txt", "rb");
    FILE *w_file = fopen("D:\\Temp\\daxiaaFileCopy.txt", "wb");
    char buffer[10]; // 514 * 4 = 2048
    // fread:参数1:容器buffer, 参数2:每次偏移多少 int, 参数3:容器大小 写个2048,等下文件就报废了
    // sizeof(buffer) / sizeof(int) 等价与 514
    while (fread(buffer, sizeof(char), 10, r_file)){
        fwrite(buffer, sizeof(char), 10, w_file);
    }
    // 关闭文件
    fclose(r_file);
    fclose(w_file);

}