題目10(無憂id 68 替換字符題)
函數(shù)readdat()實現(xiàn)從文件in.dat中讀取一篇英文文章存入到字符串?dāng)?shù)組中,請編制函數(shù)convertchara(),其函數(shù)的功能是:以行為單位把字符串中的所有小寫字母改寫成該字母的下一個字母,如果是字母z,則改寫成字母a。大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他字符不變。把已處理的字符串仍按行重新存入字符串?dāng)?shù)組中,最后調(diào)用函數(shù)writedat()把結(jié)果輸出到文件out1.dat中。
例:原文:adb.bcdza
abck.llhj
結(jié)果:aec.bdeab
bcdl.llik
原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,含標點符號和空格。
部分源程序存在文件prog1.c中。
請勿改動主函數(shù)main()、讀數(shù)據(jù)函數(shù)readdat()和輸出數(shù)據(jù)函數(shù)writedat()的內(nèi)容。
#include <stdio.h>
#include <string.h>
#include <conio.h>
char [50][80];
int maxline=0;/*文章的總行數(shù)*/
int readdat(void);
void writedat(void);
void convertchara(void)
{ int i,j;
for(i=0;i<maxline;i++)
{ for(j=0;j<strlen([i]);j++)
if([i][j]=='z') [i][j]='a';
else if([i][j]>='a'&&[i][j]<='y') [i][j]+=1;
}
}
void main()
{
clrscr();
if(readdat()){
printf("數(shù)據(jù)文件in.dat不能打開!\n\007");
return;
}
convertchara();
writedat();
}
int readdat(void)
{
file *fp;
int i=0;
char *p;
if((fp=fopen("in.dat","r"))==null) return 1;
while(fgets([i],80,fp)!=null){
p=strchr([i],'\n');
if(p)*p=0;
i++;
}
maxline=i;
fclose(fp);
return 0;
}
void writedat(void)
{
file *fp;
int i;
clrscr();
fp=fopen("out1.dat","w");
for(i=0;i<maxline;i++){
printf("%s\n",[i]);
fprintf(fp,"%s\n",[i]);
}
fclose(fp);
}