函数Rdata()实现从文件IN.dat中读取一篇英文文章存入字符串数组string中,请编写函数SortCharA(),其功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字爷串数组string中。最后调用函数Wdata(),把结果string输出到OUT.dat文件中。
例如,原文:dAe, BfC.
CcbbAA
结果:,. ABCdef
AACbbc
原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。
注意:部分源程序已经给出。请勿改动主函数main()、读数据函数Rdata()和输出数据函数Wdata()的内容。
#include <stdio.h>
#include <string.h>
#include <conio.h>
char string [50] [80];
int maxline = 0; /* 文章的总行数 */
int Rdata (void);
void Wdata (void);
void SortCharA(void)void main ()
if (Rdata ())
printf("数据文件 IN. dat 不能打开! \n\007");
return;
SortCharA ();
Wdata ( );int Rdata (void)
FILE *fp;
int i = 0;
char *p;
if ((fp = fopen("IN. dat", "r")) == NULL)
return 1;
while (fgets(string[i], 80, fp) != NULL)
p = strchr(string[i], ’\n’);
if (p)
*p = 0;
i++;
maxline = i;
fclose (fp);
return 0;void Wdata (void)
FILE *fp;
int i;
fp = fopen("OUT. dat", "w");
for (i=0; i<maxline; i++)
printf("%s\n", string[i]);
fprintf(fp, "%s\n", string[i]);
fclose (fp);
参考答案:
void SortCharA (void)
{ int i, j, k, strA;
char ch;
for (i=0; i<maxline; i++)
{ strA = strlen(string[i]);
for (j=0; j<strA-A; j++)
for (k=j+A; k<strA; k++)
if (string[i] [j] > string [i] [k])
{ ch = string[i] [j];
string[i] [j] = string[i] [k];
string[i] [k] = ch;
}
}
}