进度日志33 (用typedef定义类型,文件的打开与关闭)
学习笔记1:用typedef定义类型
编程1:用typedef生命新的类型名来代替已有类型名(用INTEGER代替int)
#include <stdio.h>
typedef int INTEGER; //程序中 INTEGER 相当于 int
void main()
{
INTEGER i = 1;
int j = 2;
printf("%d,%d\n", i, j);
}
运行结果:1,2
编程2:声明结构类型
#include <stdio.h>
typedef struct
{
int month;
int day;
int year;
}DATE;
void main()
{
DATE date_one;
date_one.month = 12;
date_one.day = 31;
date_one.year = 2012;
printf("%d-%d-%d\n", date_one.year, date_one.month, date_one.day);
}
运行结果:
编程3:声明NUM为整形数组类型
形式:typedef int NUM[100];
#include <stdio.h>
typedef int NUM[100];
void main()
{
NUM num = {0}; // 定义数组要赋初值
printf("%d\n\n", sizeof(num));
}
运行结果:400 //一个整形占4个字节,100个整型所以死400
编程4:声明STRING为字符指针类型
形式:typedef char* STRING;
#include <stdio.h>
typedef char* P;
void main()
{
P p1;
p1 = "I am King.";
printf("%s", p1);
}
编程5:声明POINTER为指向函数的指针类型,该函数返回整型值
形式:typedef int (*POINTER)();
#include <stdio.h>
typedef int (*POINTER)();
void fun();
void main()
{
POINTER p1; //void (*p1)();
p1 = &fun;
(p1)();
}
void fun()
{
printf("I am King!\n");
}
注:typedef可以用来声明各种类型名,但不能用来定义变量。他只是给类型名增加了一个别名(起了个外号)
typedef和define的区别:typedef (int*) p1;
#define p2 int*
学习笔记2:文件的打开与关闭
文件型指针变量:
FILE *fp; //fp是一个指向FILE类型结构体的指针变量
关于FILE类型结构体:
文件的打开(fopen函数)
函数调用:
FILE *fp;
fp = fopen (文件名,使用文件方式);
注意:
文件使用方式:
使用方式说明:
编程1:文件的打开
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *fp;
if (!(fp = fopen("F:\\King.txt", "rb"))) //以rb的形式打开F盘的King.txt rb表示只读
{
printf("Can't open F:\\King file!\n");
system("pause"); // 让系统暂停在这里,等待用户操作
}
else
{
printf("Open success!\n");
}
}
如果F盘里没有这个文件说不能打开,如果有,就直接打开
如果把rb改成w,当F盘中没有这个文件,系统就会在F盘创建这个文件
文件的关闭(fclose函数)
函数调用:
fclose (文件指针);
关闭成功返回值为0,否则返回EOF(-1)
文件的读写(以下函数均需要包含头文件stdio.h)
字符读写函数:fgetc和fputc
字符串读写函数:fgets和fputs
数据块读写函数:fread和fwrite
格式化读写函数:fscanf和fprinf
关于fputc函数: