100分求一道小题目的答案(编程题)

c语言题目:将一个文本文件t1.txt中的每行字符颠倒顺序后复制到另一个文件t2.txt中,请提供代码加注释。劳烦高手了,追加50分。麻烦要加注释哦我想理解理解。... c语言题目:
将一个文本文件t1.txt中的每行字符颠倒顺序后复制到另一个文件t2.txt中,请提供代码加注释。
劳烦高手了,追加50分。
麻烦要加注释哦我想理解理解。
展开
 我来答
luosiyong
2008-05-30 · TA获得超过3256个赞
知道大有可为答主
回答量:1090
采纳率:0%
帮助的人:1629万
展开全部
#include <stdio.h>
#include <string.h>
void rev(char buf[],int size) //颠倒顺序的函数
{
int i;
char tmp;
for(i=0;i<size/2;i++) //循环交换对称的字符
{
tmp=buf[i];
buf[i]=buf[size-1-i];
buf[size-1-i]=tmp;
}
}
void main()
{
FILE * fp_read,* fp_write;
fp_read=fopen("t1.txt","r"); //读取的方式打开文件
fp_write=fopen("t2.txt","w"); //写入的方式打开文件

char buf[300];
while(fgets(buf,300,fp_read)) //读取一行,直到末尾才退出while
{
rev(buf,strlen(buf)-1); //用函数颠倒顺序
fprintf(fp_write,"%s",buf); //输出到文件
}
fclose(fp_read); //关闭文件
fclose(fp_write);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cui12343712
2008-05-30
知道答主
回答量:35
采纳率:0%
帮助的人:17.5万
展开全部
#include<iostream>
#include<fstream>
#include<string>

using namespace std;

//定义一个将字符串反向排序的函数
string rsort(string& s)
{
string str;
string& s1 = str;
for(int i(s.size()); i!=0; --i)
{
s1 += s[i-1];
}
return s1;
}

int main()
{
string str;
string& s = str;
ifstream if1("t1.txt");//此处填写完整路径
ofstream of2("t2.txt");//此处填写完整路径
if(!if1)
{
cerr << "fail to open file" << endl;
exit(-1);
}
while(!if1.eof())
{
getline(if1, s);
s = rsort(s);
of2 << s << '\n';
}
of2<<flush;
return 0;
}
写好了,我是初学者,所以可能一些地方写的不好,不过可以运行的,楼主仅参考一下吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cislone
2008-05-31 · TA获得超过226个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:74.7万
展开全部
#include "conio.h"
#include <stdio.h>
//文件输入输出
#include <string.h>
//字符串操作
#define Max 100
//每行最多的字符数
char t[Max];
//定义字符串
void S(int i,int j){
//倒序函数
char tt;
//tt是临时变量
if(j-i>1)
//如果头尾中还有字符,则进行下两个字符的倒序
S(i+1,j-1);
tt=t[i];
t[i]=t[j];
t[j]=tt;
//倒序这两个字符
}
void main(void){
FILE *in;
FILE *out;
int i;
in=fopen("t1.txt","r");
out=fopen("t2.txt","w");
//打开t1.txt供输入
//打开t2.txt供输出
for(;;){
t[0]='\0';
for(i=1;i<Max;i++)t[i]=0;
//清空t字符数组
fscanf(in,"%s",t);
//将t1.txt中的一行输入t字符串
if(t[0]=='\0')break;
//若t字符串仍为空,则结束
S(0,strlen(t)-1);
//将t倒序
fprintf(out,"%s\n",t);
//输出t的值到t2.txt里
}
fclose(in);
fclose(out);
//关闭t1.txt
//关闭t2.txt
getch();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2008-05-30
展开全部
//---------------------------------------------------------------------------

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define FILE1 "t1.txt" /*t1.txt文件位置,斜杠要用双斜杠代替*/
#define FILE2 "t2.txt" /*t2.txt文件位置,斜杠要用双斜杠代替*/

void nz(char *a,FILE *f)
{
int i;
for (i=strlen(a)-1; i>=0; i--) {
fputc(a[i],f);
}
fputc('\n',f);
}

int main(void)
{
FILE *fp1,*fp2;
char *str,c;
int i;
fp1=fopen(FILE1,"r");
fp2=fopen(FILE2,"w");
while ((c=fgetc(fp1))!=EOF)
{
str=malloc(sizeof(char));
i=0;
do
{
str[i]=c;
c=fgetc(fp1);
str=realloc(str,sizeof(char)*(++i+1));
if (c!='\n'&&c!=EOF) str[i]=c;
else str[i]=0;
}while (c!='\n'&&c!=EOF);
nz(str,fp2);
free(str);
}
fclose(fp1);
fclose(fp2);
return 0;
}
//---------------------------------------------------------------------------
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jacky_zjh
2008-06-04 · 超过10用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h> //文件输入输出
#include <string.h> //字符串操作
#define Max 100 //每行最多的字符数
char t[Max]; //定义字符串
void S(int i,int j){
char tt;
if(j-i>1)
S(i+1,j-1);
tt=t[i];
t[i]=t[j];
t[j]=tt;
}
void main(void){
FILE *in;
FILE *out;
int i;
in=fopen("t1.txt","r");
out=fopen("t2.txt","w");
for(;;){
t[0]='\0';
for(i=1;i<Max;i++)t[i]=0;
fscanf(in,"%s",t);
if(t[0]=='\0')break;
S(0,strlen(t)-1);
fprintf(out,"%s\n",t);
}
fclose(in);
fclose(out);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式