a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 63|回复: 0

[C语言] C语言程序编辑学习C语言的经验之谈(2)

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
 四.函数   虽说很多程序语言都有函数这一内容,但笔者觉得C语言的函数是最有魅力的。如果你能完全掌握C语言的函数,那么学习C++就不成问题了(C++是一门建立在C语言上,但又不同于C语言的高级程序语言,它增添了很多函数。)。学习函数的方法是比较简单的,只有两个字“牢记”,即:牢记函数的功能,牢记函数的用途以及如何输入输出。有些朋友认为,程序语言中的函数没有多大用处,其实这并不正确,函数从本质上讲是一段通用程序,用它可以帮助我们节约很多编程的时间,一个聪明的编程者在编写程序前往往总是先找自己所编写的程序中有多少是可以用函数来代替的。笔者曾经作过一个比较字符串的实验,用C语言中的strcmp()函数只要一句话,而自己编写的话30句话都摆不平,可想而知函数是多么实用呀!& [9 Z3 t% B3 t# s& Z1 w. G
  写到这里笔者该告一段落了,下面送一个本人自己用C 语言编写的注册表比较程序给诸位。此段程序的注释请看“/*…*/”后的文字,程序运行时(在DOS模式下)输入的方式如下:compare xx1.reg xxx2.reg xxx3.txt,注意字段与字段之间是有空格的。(compare是程序名)4 q/ J4 i( R( ~% N
  程序代码:0 W8 {7 r1 v' R- c9 b
  # include "stdio.h" /*定义头文件或说包含文件*/
' F  H8 R% K/ ^+ ]  S' A. d  main(argc,argv) /*定义带参数的主函数*/$ s0 l. C" [: L! G* E! Q5 G5 f
  int argc; /*定义参数类型*/
) [" i; z$ a# e) C7 t1 n3 c1 z  char *argv[]; /*定义第二参数类型*/
# r4 u! S& s0 `2 f% X  ?  { FILE *fp1,*fp2,*fp3; /*定义文件指针*/
: F4 m' W. j3 G* f1 ^) c5 G/ v  char a,b; /*定义字符变量*/
6 ~) H" O! Z9 A! g/ l  if((fp1=fopen(argv[1],"r"))==NULL)
2 H9 x* R! f9 L4 @0 N# |  /*打开第一的注册表备份文件,如果不存在则跳出程序并显示! L2 q0 v' ]& q4 A! g+ {9 i
  “The file don`t open!”*/! h9 K+ I% C  F. y& o! ^; Z( \. W
  { printf("The file don`t open!");3 d9 ]1 Y0 a7 c, w! k+ Y
  exit(0); }
* Z# l/ e2 h; B, {7 Y; d  i' I  if((fp2=fopen(argv[2],"r"))==NULL) /*打开第二的注册表备份文件,如果不存在
3 p$ p& K3 F' p" c8 T; O/ }* p  则跳出程序并显示    “The file don`t open!”*/
8 S" Q3 f6 e+ ]% ]0 s  { printf("The file don`t open!");
. _7 i* b) l; m& ^* L7 j+ d" S7 M& S' h  exit(0);}4 }% c+ o4 Z* T: c& N
  if((fp3=fopen(argv[3],"w"))==NULL) /*建立新的文本文件,用于存放比较结果。*/; i$ m  K. M9 t0 m: W
  {printf("The file don`t open!");
% G# _/ f9 u- o# e! @8 f4 \. v) Y  exit(0);}, w1 A: D( C# C8 S: J
  rewind(fp1); /*规定文件指针fp1指向第一个注册表文件头部*/, [. m, c* s: i8 f* y
  rewind(fp2); /*规定文件指针fp2指向第二个注册表文件头部*/- G. Z4 K% v/ |6 _0 J1 b( @
  while(!feof(fp1)||!feof(fp2)) /*开始比较*/+ J1 f5 {9 w8 `3 E( h( S
  { a=fgetc(fp1); /*读取第一个注册表文件内容并赋予给字符变量a*/6 c! L6 H. H+ G5 S% ?3 e1 O; i
  b=fgetc(fp2); /*读取第二个注册表文件内容并赋予给字符变量b*/
& h' e$ U* X- S- b% `4 Z  if(a!=b) fputc(b,fp3);
$ }* b' A" o0 c% P! h/ v) G  /*字符变量a与b不相同的话,那么把不同之处写入新建的文本文件中*/
* m( k" e# T0 c5 U3 u  if(feof(fp1)) fputc(b,fp3);- w. ?8 U9 ?+ C7 J! }
  /*如果第一个注册表文件已经读完,第二个文件还有未读取部分,# o) ~+ M7 W* R% @) @' j- C. ^
  那么把第二个文件的剩余部分全部写入新建文件中*/
" @8 y! m( o/ f0 C7 w( a  if(feof(fp2)) fputc(a,fp3);} /*如果第二个注册表文件已经读完,
3 a2 o6 h1 Q( V' t  第一个文件还有未读取部分,那么把第一个文件的剩余部分全部写入新建文件中*/
; D' ]! H- D: m% f  fclose(fp1); /*关闭第一个注册表文件*/
& k/ ^( M. y, h( k2 p  fclose(fp2); /*关闭第二个注册表文件*/
, g; T* m: ^: H) M) o6 I. L/ I5 Z. X7 p  fclose(fp3); /*关闭新建文件*/
% T1 y; y+ X3 Z: Y7 ^  }
3 J# v) u& V6 ~4 H! G, v+ J: Y  对于高深莫测的C语言来说,寥寥3千字并不能说清楚的什么问题。但只要您看了此文后,我想对于您学习此语言一定有很大的帮助,同时也能了知晓如何用最短的时间学会C语言以及掌握C语言的精髓所在。另外,此文中所涉及的知识点都是笔者通过实践得出的,因此若是其他专业书籍没有讲到过的问题可以参考本文。最后祝大家学习C语言顺利!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-16 11:14 , Processed in 0.143451 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表