首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言数据结构之文本格式化有关问题

2012-07-03 
C语言数据结构之文本格式化问题第一次做课程设计,现在遇到了一些问题,想请高手指点一下,下面的程序在主函

C语言数据结构之文本格式化问题
第一次做课程设计,现在遇到了一些问题,想请高手指点一下,下面的程序在主函数getch()那边出错了,搞了好久还是不知道怎么修改,请大侠棒棒忙 指点指点迷津!

[code=C/C++][/code]
#include<stdio.h>
#include<stdlib.h>
int pl=20,pw=80,lm=1,hl=3,fl=3,spn=1;//设置页长为20,页宽为80,坐空白行为1,头长为3,脚长为3,起始页为1

main()
{
void operation(void);//声明一个operation无参数无返回值的函数
operation();
printf("The TXT has been edited,please check it in the new txt named new.txt");
getchar(); 
getchar();
}

void operation(void)
{
FILE *fp,*pf,*panduan; //声明3个指针,指向文件类型
int pli=1,pwi=1,lmi=1,spni=1,i,j=0,k=0,sp1,sp2,l=0,m=0,n=0; 
  char ch,hc; 
if(!(fp=fopen("c:\\doc.txt","r")))//无法以只读的方式打开c盘的doc.txt文件,则报错! 
{
printf("intput ERROR!");
exit(1);


if(!(pf=fopen("f:\\new.txt","w")))
  {
  printf("input ERROR!");
  exit(1);
  }
if(!(panduan=fopen("f:\\doc.txt","r")))
{
printf("intput ERROR!");
exit(1);
}
fflush(stdin);//清空输入缓冲区 
  ch=fgetc(fp);//读出指针fp,赋给ch 
  fflush(stdin);//清空输入缓冲区
hc=fgetc(panduan); //读出指针panduan,赋给hc

/*******如果hc等于空格,未到文件尾部,等于33,44,46,58,59,63执行循环*****/
while(hc!=' '&&hc!=EOF&&hc!=33&&hc!=44&&hc!=46&&hc!=58&&hc!=59&&hc!=63) 
{
fflush(stdin);//重新读入指针panduan里面的文件 
  hc=fgetc(panduan);
  m++;
}
/******读出文件到尾部******/
while(ch!=EOF)
{
 if(m==n)
  {
  fflush(stdin);
  hc=fgetc(panduan);
  m++;
  while(hc!=' '&&hc!=EOF&&hc!=33&&hc!=44&&hc!=46&&hc!=58&&hc!=59&&hc!=63)
  {
  fflush(stdin);
  hc=fgetc(panduan);
  l++;
  m++;  
}

if((l+pwi)>pw)//页宽加1大于页式子 
  {
  pwi=1; //页宽为1 
  pli++;//页长加1 
  fputc('\n',pf);//换行 
  fputc(' ',pf);//空格 
  }
  l=0;
  }
   
if(pli>=18)//页长大于等于18行 
  {
  fputc('\n',pf); //换行 
  for(i=0;i<pw/2-1;i++)
  fputc(' ',pf); 
  sp1=spni/10;
  sp2=spni%10;
  fputc(sp1+48,pf);
  fputc(sp2+48,pf);
  fputc('\n',pf);
  fputc('\n',pf);
  pli=1,pwi=1,spni++;
  k=1;
  }
  if(pli==1)
  {
  //每页页项所空行数为3 
for(i=0;i<3;i++)
  fputc('\n',pf); 
  pli=hl+1; 
  //段首缩进8个字符的位置 
for(i=0;i<8+lm;i++)
  fputc(' ',pf); 
  pwi=9;
  }
   

if(ch=='@'&&k==0)//ch等于@,k=0 
  {
  fputc('\n',pf);
  pli++;//页长自增1; 
  for(i=0;i<lm+8;i++)//段首缩进8个字符 
  fputc(' ',pf); 
  pwi=9;
  }
   
if(ch==' '&&k==0)//如果ch空格,k=0 
  {
if(j==0)
  fputc(ch,pf);//输出文本,页宽+1 
  j=1;


  pwi++;
}
  else
  {
if(ch!='\r'&&k==0) //若ch不为只读并k=0 
  fputc(ch,pf); //输出文本 
   
/***********若ch=33或者44或者58或者63,k=0**********/ 
if((ch==33||ch==44||ch==46||ch==58||ch==59||ch==63)&&k==0)
  fputc(' ',pf);//输出空格然后页宽自增1 
  j=0;
 pwi++;
}

if(pwi==pw&&k==0) //页宽若为80,k=0,则换行,页长自增1 
  { 
pwi=1;
  pli++;
  fputc('\n',pf); 
   
for(i=0;i<lm;i++) //左边空一格 
  fputc(' ',pf); 
}
   
if(k==0) //k=0就清空缓冲区,重新读fp的内容 
  { 
fflush(stdin);
  ch=fgetc(fp);
  n++;
}
  k=0; 
}
   
/***关闭fp,pf,panduan等指针操作**/
fclose(fp);
  fclose(pf);
  fclose(panduan); 


}

[解决办法]

C/C++ code
if(!(fp=fopen("c:\\\\doc.txt","r")))//无法以只读的方式打开c盘的doc.txt文件,则报错! {
[解决办法]
r的话,就是说以只读方式打开,但这里也必须保证文件存在。
我刚才给你调了一下,可以通过,而且可以读取,你的错误应该就是文件不存在。

热点排行