C程序基础

来源:互联网 发布:java算圆周率 编辑:程序博客网 时间:2024/05/16 04:44

C程序是由函数构成的,函数是C程序的基

本单位,用高级语言编写的程序称为源程

序。
标识符只能由字母,数字,下划线3种字符

组成且第一个字符必须为字母或下划线。
putchar()函数的作用是向终端输出一个字

符,getchar()是从终端输入一个字符。

char c;c=getchar();
条件编译:
1.#ifdef 标识符
程序段一
#else
程序段二
#endif
它的作用是若所指定的标识符已经被

#define命令定义值则编译程序段一,否则

编译程序段二。#ifndef标识符与其刚好相

反。
#if 表达式
程序段一
#else
程序段2
#endif
当指定的表达式为真时编译程序段1,否则

编译程序段二。
指针:程序经过编译后已经将变量名转换

为变量的地址,对变量值的存取都是通过

地址进行的。一个变量的地址称为该变量

的指针,如果有一个变量专门用来存放另

一变量的地址,则为指针变量。指针变量

中存放的值是是地址,指针是一个地址,

而指针变量是存放地址的变量。
int *point_1;point_1=&i;
指针变量前面的*号表示该变量的类型为指

针型变量,指针变量名为paint1,而不是

*point_1;
&和*两个运算符的优先级相同,但按自右

向左的方式结合。++与*为同一优先级别,

而结合方式为自右向左。*a++=*(a++);先

得到a指向的变量的值,再自加。
数组名代表数组中首元素的地址,可将其

直接赋给指针,int *p=a;
数组名是常量,不可以进行自增与自减运

算,用数组名作函数参数与用指针作函数

参数是一样的,实参数组名代表一个固定

的地址,或者说是指针常量,但形参数组

名并不是一个固定的地址,而是作为指针

变量。
二维数组,int a[3][4];a是数组名,包含

3个元素,a[0],a[1].a[2],每一个元素又

是一个一维数组,包含4个元素,a代表第0

行的首地址,a+1代表第一行的首地址,a

[0]代表一维数组a[0]中第0列元素的地址

,a[0]=&a[0][0];
对数级的初始化:
char str[14]={"i love china!"};不能等

价于:char str[14];
str[]="i love china";
函数名代表该函数的入口地址。
int max(int,int);
int (*p)(int ,int);
p=max;
c=(*p)(a,b)=max(a,b);
用指向函数的指针作函数参数。指针数组

int *p[4];比较适合于用来指向若干个字

符串,共用体类型的一般形式为:union

共用体名{成员表列}变量。
共用体变量所占用的内存长度是各成员中

最长的成员的长度,共用体在每一瞬时只

有一个成员起作用,不能对共用体变量名

赋值,也不能企图引用变量名来得到一个

值,又不能在定义共用体变量时对其初始

化。
枚举类型:enum weekday

{sun,mon,tue,wed,thu,fri,sat};声明
enum weekday worday; worday=mon;
文件:每个被使用的文件都在内存中开辟

一个区,用来存放文件的有关信息,这些

信息保存在一个结构体变量中,取名为

FILE.
文件打开:FILE *fp;fp=fopen(文件名,

使用文件方式);
if((fp=fopen("file","r"))==NULL)
printf("cannot open this file\n");
文件关闭:fclose(文件指针);fclose

(fp);
文件读写:fputc(ch,fp);把一个字符写到

磁盘文件上去。
ch=getc(fp);如果遇到文件结束符,返回

一个文件结束标志EOF(-1);
ch=fgetc(fp);
while(ch!=EOF){
putchar(ch);
ch=fgetc(fp);}
可以用feof()函数来判断文件是否真的结

束。
while(!feof(fp){c=fgetc(fp);}
fputc和fgetc函数使用举例。
exit()是标准C的库函数作用是使程序终止

,用此函数应当加入stdlib头文件。
fread函数与fwrite函数
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
count表示多少个size字节的数据项。
fprintf函数与fscanf函数
fprintf(文件指针,格式字符串,输出表

列);
fscanf(文件指针,格式字符串,输出表列

);
fprintf(fp,"%d,%6.2f",i,t);
putw与getw函数
putw(10,fp);
i=getw(fp);
用来对磁盘文件读写一个整数。
fgets()与fputs()函数
fgets(str,n,fp);
fputs("china",fp);
文件定位
rewind函数,使位置指针重新返回文件的

开头。
fseek(文件指针,位移量,起始点);
fseek(fp,100L,0);将指针移到离文件头

100个字符处,一般用于二进制文件。
#include<stdio.h>
#include<stdlib.h>
void main(){
FILE *fp;
char ch,filename[10];
scanf(%s",filename);
if(fp=fopen(filename,"w"))==NULL)
{printf("cannot open file\n";exit

(0);}
ch=getchar();
ch=getchar();
while(ch!='#'){
fputc(ch,fp);
putchar(ch);
ch=getchar();}
putchar(10);
fclose(fp);

#include<stdio.h>
#define SIZE 4
struct student_type{char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
void save{
FILE *fp;
int i;
fp=fopen("stu_list","wb");
for(i=0;i<size;i++)
if(fwrite(&stud[i],sizeof(struch

student_type),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}


0 0