安卓模拟器ios版贴吧:有没有C语言达人啊~帮小弟分析一下这段程序...拜谢~

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 04:15:59
#include "stdio.h"
#include "stdlib.h"
#define MAXLEN 800
#define MAXLINE 2000
char buffer[MAXLEN],*lineptr[MAXLINE];
char fname[100];
int last;
FILE *fp;
void strcpy(char* strDin,char* strSrc)
{
while(*strSrc!='\0')*(strDin++)=*(strSrc++);
}
int main(int argc, char* argv[])
{
char s2[50];
while(1)
{
gets(s2);
/////////////////////////////////////////////////////////////////////////////
if(s2[0]=='-'&&s2[1]=='o'&&s2[2]==' ')
{
FILE *fp;
int i=0,j=0,k;
for(k=3;s2[k]!='\0';k++)
{
fname[j++]=s2[k];
fname[j]='\0';
}
if((fp=fopen(fname,"r"))==NULL)
{printf("can`t open file \n");continue;}
else
printf("the file is open now\n");
while(fgets(buffer,MAXLEN,fp)==buffer)
{
lineptr[i]=(char *)malloc(strlen(buffer)+1);
strcpy(lineptr[i++],buffer);
}
fclose(fp);
last=i;
}////////////////////////////////////////////////////////////////////////////
if (s2[0]=='-'&&s2[1]=='s'&&s2[2]==' ')
{
int i,j=0,k;
FILE *fp;
char sname[100];

{
for(k=3;s2[k]!='\0';k++)
{
sname[j++]=s2[k];
sname[j]='\0';
}

}

if((fp=fopen(sname,"w"))==NULL)
{printf("can`t open the file \n");continue;}
else
for(i=0;i<last;i++)
{
fputs(lineptr[i],fp);

}
fclose(fp);
printf("the file is saved\n");

}
fclose(fp);
}
return 0;
}
这个程序要从磁盘上读出一个文本文件,然后存到指定路径去.怎么我每次存的时候都会出现乱码啊~
能不能帮小弟优化一下啊~我保存的时候写入的是奇怪的汉字~

兄弟,你这个程序我看得不太懂。
你这句gets(s2);是得到S2吧,
这句if(s2[0]=='-'&&s2[1]=='o'&&s2[2]==' ')是看源文件。
这句if (s2[0]=='-'&&s2[1]=='s'&&s2[2]==' ')是看目的文件。可是这两句中间是不是应该有个gets(s2)啊?
另外,如果你说的是出现乱码,就表明它写进去了,说明这个程序是好用的。如果是汉字的话,你应该在编码那块好好看看。英文应该没问题的。