- 论坛徽章:
- 0
|
最近我在练习C语言编程关于文件操作的问题,是这样的,我的程序里面要多次用到打开文件的操作:
if((fp=fopen(filename,style))==NULL){
printf("Warning!!Cannot open this file\n");
exit(0);
}
我觉得重复得太多了不好,我就单独把它写成了个子程序,但这样一来,原本正确的程序不返回任何结果,自己就结束,还居然回到命令提示符下!我想了很久没找到问题的根源,是文件不能这样打开吗?请高手以及众兄弟指点迷津,给个意见,谢谢!
附源代码:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main(){
void initiate();
void sort(char *);
void combine(char *);
void display();
void file_open(char *,char *,FILE *);
char *string;
int i;
FILE *fp;
file_open("C","wb",fp);
clrscr();
printf("Initiating file 'A' and file 'B'...\n");
initiate();
combine(string);
sort(string);
for(i=0;i<10;i++)
fwrite(string+i,sizeof(char),1,fp);
fclose(fp);
display();
}
void file_open(char *filename,char *style,FILE *fp){ //这就是我写的子程序
if((fp=fopen(filename,style))==NULL){
printf("Warning!!Cannot open this file\n");
exit(0);
}}
void initiate(){
FILE *fp1,*fp2;
file_open("A","wb",fp1);
file_open("B","wb",fp2);
fputs("fedcba",fp1);
fputs("jihg",fp2);
fclose(fp1);
fclose(fp2);
}
void sort(char *str){
int i,j,temp;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++){
if(str[j]>str[j+1]){
temp=str[j];
str[j]=str[j+1];
str[j+1]=temp;
}
}
}
void combine(char *str){
FILE *fp1,*fp2;
int i;
file_open("A","rb",fp1);
file_open("B","rb",fp2);
for(i=0;i<6,!feof(fp1);i++) *(str+i)=fgetc(fp1);
for(i=6;i<10,!feof(fp2);i++) *(str+i)=fgetc(fp2);
fclose(fp1);
fclose(fp2);
}
void display(){
FILE *fp;
char ch;
file_open("C","rb",fp);
printf("The selected characters are:\n");
ch=fgetc(fp);
while(ch!=EOF){
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
[ 本帖最后由 pascal7718 于 2007-7-9 22:33 编辑 ] |
|