图片是题目, 答案在后边,对于答案有点不理解!
这是题目的大体程序!
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char xx[50][80];
int maxline=0; /* 文章的总行数 */ int ReadDat(void);
void WriteDat(void); void StrOL(void)
{ } void main()
{
if(ReadDat()){
printf("数据文件IN.DAT不能打开!\n\007");
return;
}
StrOL();
WriteDat();
} int ReadDat(void)
{
FILE *fp;
int i=0;
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);
}
这是答案!
void StrOL(void)
{ int i,j; /* 定义变量 */
char str[80];
for(i=0;i<maxline;i++)
{ memset(str,0,80); /* 字符串初始化 */
for(j=strlen(xx[i])-1;j>=0;j--)
if(!isalpha(xx[i][j])) /* 提取单词 */
{ if(isalpha(xx[i][j+1]))
{ strcat(str,xx[i]+j+1); /* 保存单词 */
strcat(str," ");
}
xx[i][j]='\0'; /* 设置行尾 */
}
strcat(str,xx[i]); /* 保存第一个单词 */
strcpy(xx[i],str); /* 复制字符串 */
}
}
这是题目的大体程序!
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char xx[50][80];
int maxline=0; /* 文章的总行数 */ int ReadDat(void);
void WriteDat(void); void StrOL(void)
{ } void main()
{
if(ReadDat()){
printf("数据文件IN.DAT不能打开!\n\007");
return;
}
StrOL();
WriteDat();
} int ReadDat(void)
{
FILE *fp;
int i=0;
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);
}
这是答案!
void StrOL(void)
{ int i,j; /* 定义变量 */
char str[80];
for(i=0;i<maxline;i++)
{ memset(str,0,80); /* 字符串初始化 */
for(j=strlen(xx[i])-1;j>=0;j--)
if(!isalpha(xx[i][j])) /* 提取单词 */
{ if(isalpha(xx[i][j+1]))
{ strcat(str,xx[i]+j+1); /* 保存单词 */
strcat(str," ");
}
xx[i][j]='\0'; /* 设置行尾 */
}
strcat(str,xx[i]); /* 保存第一个单词 */
strcpy(xx[i],str); /* 复制字符串 */
}
}