1.共用体和联合体
# include <stdio.h>
typedef union test
{
char ch;
short sh;
int a;
} test_t ;
int main ( void )
{
test_t obj;
obj. a = 0x87654321 ;
printf ( "&obj =%p\n" , & obj) ;
printf ( "&obj.ch=%p\n" , & obj. ch) ;
printf ( "&obj.sh=%p\n" , & obj. sh) ;
printf ( "&obj.a =%p\n" , & obj. a) ;
printf ( "sizeof(test_t) = %u\n" , sizeof ( test_t ) ) ;
printf ( "a = 0x%x\n" , obj. a) ;
printf ( "sh = 0x%x\n" , obj. sh) ;
printf ( "ch = 0x%x\n" , obj. ch) ;
obj. ch = 0xFF ;
printf ( "a = 0x%x\n" , obj. a) ;
printf ( "sh = 0x%x\n" , obj. sh) ;
printf ( "ch = 0x%x\n" , obj. ch) ;
return 0 ;
}
2.枚举
enum color { red, green = - 1 , blue, black, pink= 18 , yellow} ;
int main ( void )
{
int flg = 2 ;
if ( blue == flg)
{
printf ( "blue is 2\n" ) ;
}
else
{
printf ( "blue is not 2\n" ) ;
}
printf ( "yellow is %d\n" , yellow) ;
return 0 ;
}
3.系统文件
4.文件指针和普通指针区别
5.文件分类
6.文件操作一般步骤
7.打开,关闭文件函数
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
int main ( void )
{
FILE* fp = fopen ( "test01.txt" , "w" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
getchar ( ) ;
return - 1 ;
}
fclose ( fp) ;
printf ( "=====finish=====\n" ) ;
return 0 ;
}
8.文件访问路径
9.按字符写文件 fputc
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
int main ( void )
{
char * filename = "test04.txt" ;
FILE* fp = fopen ( filename, "w" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return - 1 ;
}
int ret = fputc ( 'A' , fp) ;
printf ( "ret = %d\n" , ret) ;
fclose ( fp) ;
printf ( "=====finish=====\n" ) ;
return 0 ;
}
int main ( void )
{
char * filename = "test04.txt" ;
FILE* fp = fopen ( filename, "w" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return - 1 ;
}
char ch = 'a' ;
while ( ch <= 'z' )
{
int ret = fputc ( ch, fp) ;
if ( ret == - 1 )
{
perror ( "fputc error" ) ;
return - 1 ;
}
ch++ ;
}
fclose ( fp) ;
printf ( "=====finish=====\n" ) ;
return 0 ;
}
10.按字符读文件 fgetc
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
void write_file ( )
{
FILE* fp = fopen ( "test05.txt" , "w" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
fputc ( 'a' , fp) ;
fputc ( 'b' , fp) ;
fputc ( 'c' , fp) ;
fputc ( 'd' , fp) ;
fclose ( fp) ;
}
void read_file01 ( )
{
FILE* fp = fopen ( "test05.txt" , "r" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
char ch = fgetc ( fp) ;
printf ( "ch = %c\n" , ch) ;
ch = fgetc ( fp) ;
printf ( "ch = %c\n" , ch) ;
ch = fgetc ( fp) ;
printf ( "ch = %c\n" , ch) ;
ch = fgetc ( fp) ;
printf ( "ch = %c\n" , ch) ;
fclose ( fp) ;
}
void read_file02 ( )
{
FILE* fp = fopen ( "test05.txt" , "r" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
char ch;
while ( 1 )
{
ch = fgetc ( fp) ;
if ( ch== EOF )
{
break ;
}
printf ( "ch = %c\n" , ch) ;
}
fclose ( fp) ;
}
int main ( void )
{
read_file02 ( ) ;
return 0 ;
}
11.feof()函数
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
void write_file06 ( )
{
FILE* fp = fopen ( "test06.txt" , "w" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
fputc ( 'a' , fp) ;
fputc ( 'b' , fp) ;
fputc ( - 1 , fp) ;
fputc ( 'c' , fp) ;
fputc ( 'd' , fp) ;
fputc ( '\n' , fp) ;
fclose ( fp) ;
}
void read_file06 ( )
{
char ch;
FILE* fp = fopen ( "test06.txt" , "r" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
while ( 1 )
{
ch = fgetc ( fp) ;
if ( feof ( fp) )
{
break ;
}
printf ( "ch = %c\n" , ch) ;
}
fclose ( fp) ;
}
void test_feof ( )
{
FILE* fp = fopen ( "test06.txt" , "r" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
while ( 1 )
{
printf ( "没有到达文件结尾\n" ) ;
fgetc ( fp) ;
if ( feof ( fp) )
{
break ;
}
}
fclose ( fp) ;
}
int main ( void )
{
test_feof ( ) ;
return 0 ;
}
12.fgets()函数和fputs()函数
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
void write_file06 ( )
{
FILE* fp = fopen ( "test06.txt" , "w" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
fputc ( 'a' , fp) ;
fputc ( 'b' , fp) ;
fputc ( - 1 , fp) ;
fputc ( 'c' , fp) ;
fputc ( 'd' , fp) ;
fputc ( '\n' , fp) ;
fclose ( fp) ;
}
void read_file06 ( )
{
char ch;
FILE* fp = fopen ( "test06.txt" , "r" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
while ( 1 )
{
ch = fgetc ( fp) ;
if ( feof ( fp) )
{
break ;
}
printf ( "ch = %c\n" , ch) ;
}
fclose ( fp) ;
}
void test_feof ( )
{
FILE* fp = fopen ( "test06.txt" , "r" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
while ( 1 )
{
printf ( "没有到达文件结尾\n" ) ;
fgetc ( fp) ;
if ( feof ( fp) )
{
break ;
}
}
fclose ( fp) ;
}
int main0601 ( void )
{
test_feof ( ) ;
return 0 ;
}
13.练习:文件版四则运算
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>
# include <string.h>
void write_file08 ( )
{
FILE* fp = fopen ( "test08.txt" , "w" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
fputs ( "10/2=\n" , fp) ;
fputs ( "10*3=\n" , fp) ;
fputs ( "4-2=\n" , fp) ;
fputs ( "10+2=\n" , fp) ;
fclose ( fp) ;
}
int calc ( int a, char ch, int b)
{
switch ( ch)
{
case '+' :
return a + b;
case '-' :
return a - b;
case '*' :
return a * b;
case '/' :
return a / b;
default :
break ;
}
}
void read_file08 ( )
{
char buf[ 4096 ] = { 0 } ;
char result[ 4096 ] = { 0 } ;
char sum_res[ 4096 ] = { 0 } ;
int a, b;
char ch;
FILE* fp = fopen ( "test08.txt" , "r" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
while ( 1 )
{
fgets ( buf, 4096 , fp) ;
if ( feof ( fp) )
{
break ;
}
sscanf ( buf, "%d%c%d=\n" , & a, & ch, & b) ;
sprintf ( result, "%d%c%d=%d\n" , a, ch, b, calc ( a, ch, b) ) ;
strcat ( sum_res, result) ;
}
fclose ( fp) ;
fp = fopen ( "test08.txt" , "w" ) ;
if ( fp == NULL )
{
perror ( "fopen error" ) ;
return ;
}
fputs ( sum_res, fp) ;
fclose ( fp) ;
}
int main ( void )
{
write_file08 ( ) ;
getchar ( ) ;
read_file08 ( ) ;
return 0 ;
}