機能ReadDat()XXで文字列の配列に堆積したファイルENG.INから英語の資料を、読ん達成するために、機能encryptCharを(ご用意ください)、与えられた代替によるアレイ内のすべての文字が置換されXX、位置に対応する配列にファイルにPS1.DAT XX出力をもたらすように)関数呼び出しWriteDat(後に残っX-X
代替的関係:F(P)= P * 11 MOD 256(pはより少ないまたは32に等しい単一の文字列のASCII値であり、F(p)が計算後に新しい文字のASCII値である)、もし計算されたF(P)値以上より130は、文字変わらず、そうでなければ、F(p)の代わりに文字に対応します。(注符号なし整数と中間変数こと)、元のデータファイルのフォーマットは、次のとおり、各列の幅が80文字未満です。
書式#include <stdio.hに>
書式#include <string.hの>
書式#include <conio.h>
書式#include <のctype.h>
unsigned char型のX-X [50] [80]。
int型MAXLINE = 0; / 記事の行の合計数 /
int型ReadDat(無効)。
空WriteDat(無効)。
空encryptChar()
{
私は、jはint型。
用(; I <MAXLINE; iが0 = I ++)
(; J <strlenを(XX [I]); J ++ J = 0)のための
IF(XX [I] [J] * 11%256 <= 32 || XX [I] [J] * 11%256> 130)を続けます。
他のXX [I] [J] = XX [I] [J] * 11%256;
}
無効メイン()
{
clrscr();
(ReadDat()){のprintf( "開くことができませんENG.INデータファイル\ nは\ 007!")であれば、
リターン;
}
encryptChar();
WriteDat();
}
int型ReadDat(無効)
{
FILE * fpを。
私は0を= int型。
unsigned char型* P;
IF((FP =のfopen(「eng.in」、「R」))== NULL)リターン1。
一方、(関数fgets(XX [I]、80、FP)!= NULL){
P = strchr(XX [i]が、 '\ n');
if§* P = 0; I ++; } MAXLINE = I。
FCLOSE(FP)。0を返します。
}
空WriteDat(無効)
{
FILE * fpを。
私はint型。
FP =のfopen( "ps1.dat"、 "W")。
用(; I <MAXLINE; iが0 = I ++){
printf( "%sの\ n"、XX [I])。
関数fprintf(FP、 "%sの\ n"、XX [I])。
}
FCLOSE(FP)。
}