C语言小程序求解!

来源:百度知道 编辑:UC知道 时间:2024/06/16 17:41:57
函数RData()实现从文件IN.dat中读取一篇英文文章存入字符串数组original中,请编写StrCharMove()函数,其功能是:以行为单位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组original中。最后调用函数WData(),把结果original输出到文件OUT.dat中。
原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。
#include <stdio.h>
#include <string.h>
#include <conio.h>
char original[50][80];
int maxline = 0; /* 文章的总行数 */
int RData(void);
void WData(void);
void StrCharMove(void)
{int i, j, strl;
for (i=0; i<maxline; i++)
{ strl = strlen(original[i]);
for (j=0; j<strl; j++)
original[i][j] += original[i][j]>>4;
}

}
void main()
{ if (RData())
{ printf("数据文件IN.dat不能打开!\n\007");
return;
}
StrCharMove();
WData();
}
int RData(void)
{ FILE *fp;
int i = 0;
char *p;
if ((fp = fopen("IN.dat", "r")) == NULL)
ret

fgets 只读到换行符为止, 或者读到80个字符为止(第二个参数)

\n 当然也是一个字符咯, 会放在数组中处理的。

空格的asc 码是32 啦,\0一般就是 asc码 0

在这个程序中,空格就是一个普通的字符。 在有些函数中, 空格会被当做分隔符了, 这个都是看函数而定的, 像这里的 fgets就是把 换行符当做分隔符

这么复杂的问题没奖励。慢慢等吧!