永发信息网

C程序黑屏不能输字

答案:3  悬赏:0  手机版
解决时间 2021-05-07 09:27

函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.DAT中。

    替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
unsigned char  xx[50][80];
int  maxline = 0; 
int ReadDat(void);
void WriteDat(void);
void encryptChar()
{
    int i,j;
 for(i=0;i<maxline;)
  for(j=0;j<strlen(xx[i]);j++)
   if(xx[i][j]*11%256<=32||xx[i][j]%2==0)
    continue;
   else xx[i][j]=xx[i][j]*11%256;
}
void main()
{
 if (ReadDat())
 {
  printf("数据文件IN.DAT不能打开!\n\007");
  return;
 }
 encryptChar();
 WriteDat();
}
int ReadDat(void)
{
 FILE  *fp;
 int  i = 0;
 unsigned char  *p;
 if ((fp = fopen("IN.DAT", "r")) == NULL)
  return 1;
 while (fgets(xx[i], 80, fp) != NULL)
 {
  p = strchr(xx[i], '\n');
  if (p)
   *p = 0;
  i++;
 }
 maxline = i;
 fclose(fp);
 return 0;
}
void WriteDat(void)
{
 FILE  *fp;
 int  i;
 fp = fopen("OUT.DAT", "w");
 for (i=0; i<maxline; i++)
 {
  printf("%s\n", xx[i]);
  fprintf(fp, "%s\n", xx[i]);
 }
 fclose(fp);
}

这么写,黑屏为什么不能写字??

最佳答案

代码稍微存在点小问题,下面的代码帮你改好了,不过请确认运行前文件夹内有IN.DAT和OUT.DAT文件


#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
char  xx[50][80];
int  maxline = 0;


int ReadDat(void);
void WriteDat(void);


void encryptChar()
{
    int i,j;
 for(i=0;i<maxline;i++) 
  for(j=0;j<strlen(xx[i]);j++)
   if(xx[i][j]*11%256<=32||xx[i][j]%2==0)
    continue;
   else
    xx[i][j]=xx[i][j]*11%256;
}


int main()
{
 if (ReadDat())
 {
  printf("数据文件IN.DAT不能打开!\n\007");
  return 0;
 }
 encryptChar();
 WriteDat();
}


int ReadDat(void)
{
 FILE  *fp;
 int  i = 0;
 if ((fp = fopen("IN.DAT", "r")) == NULL)
  return 1;
 while (fgets(xx[i],80,fp)!=NULL)
 {
 // printf("%s",xx[i]);
  i++;
 }
 maxline = i;
 fclose(fp);
 return 0;
}


void WriteDat(void)
{
 FILE  *fp;
 int  i;
 fp = fopen("OUT.DAT", "w");
 for (i=0; i<maxline; i++)
 {
  printf("%s\n", xx[i]);
  fprintf(fp, "%s\n", xx[i]);
 }
 fclose(fp);
}
运行结果:


全部回答
没发现你的输入函数
好乱……
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
N79現在什么賈
qq2010怎么把好友移到企业好友里
求校园修真类的小说?
14~17的男生还是希欢清纯点的女生还是非主流
请问混合性皮肤用什么化妆品最合适?怎样才能
巍山县红叶土杂经营部地址在什么地方,想过去
1993.1.30的爱情是怎样的
不含通讯费什么意思啊?
你说的什么话
排卵期出血,量大和月经还要多怎么办
三星 scx 4521f传真能收,发的时候对方拿起话
什么才是谎言?
语音卡导致来电显示不全怎么解决
公司开业祝贺词,用什么诗句表达公司开张喜庆
we can put the sign here(对划线部分提问,p
推荐资讯
金在中叫他花花好听,还是在在好听?
上蟆塘这个地址在什么地方,我要处理点事
我的笔记本电脑的R键总是自动不停的按,还原
怎样才能从新领取手机宠物?
悲伤恋歌的结局
初二科学水的浮力对于水的压强、浮力,特别是
卫生老师所需资历
男生小气代表什么?
去黑头用海藻泥有用吗?
陌生人的电话怎么回事?
联想G460与惠普的CQ42-153噶个性价比好
子煜木子铁港式冷饮厅在什么地方啊,我要过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?