当前位置:首页 » 文件管理 » c语言文件上传

c语言文件上传

发布时间: 2024-12-04 10:17:59

‘壹’ c语言编程中如何将一个文件中的信息转入到另一个文件

打开两个文件,从一个文件读数据,写入到另一个文件,例如:

//---------------------------------------------------------------------------

#include <stdio.h>

int main(void)
{
FILE *fp1,*fp2;
char c;
fp1=fopen("dat.txt","r"); /*打开源文件*/
fp2=fopen("tot.txt","w"); /*打开将写入的文件*/
while ((c=fgetc(fp1))!=EOF) /*将源文件fp1的内容转存(复制)到目标文件fp2中*/
fputc(c,fp2);
fclose(fp1); /*关闭文件*/
fclose(fp2);
return 0;
}
//---------------------------------------------------------------------------

‘贰’ C语言实现从ftp下载、上传文件

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。
1.C语言可以使用CStdioFile函数打开本地文件。使用类CInternetSession 创建并初始化一个Internet打开FTP服务器文件。
CStdioFile继承自CFile,一个CStdioFile 对象代表一个用运行时函数fopen 打开的C 运行时流式文件。
流式文件是被缓冲的,而且可以以文本方式(缺省)或二进制方式打开。文本方式提供对硬回车—换行符对的特殊处理。当你将一个换行符(0x0A)写入一个文本方式的CStdioFile 对象时,字节对(0x0D,0x0A)被发送给该文件。当你读一个文件时,字节对(0x0D,0x0A)被翻译为一个字节(0x0A)。
CStdioFile 不支持Duplicate,LockRange,和UnlockRange 这几个CFile 函数。如果在CStdioFile 中调用了这几个函数,将会出现CNoSupported 异常。
使用类CInternetSession 创建并初始化一个或多个同时的Internet 会话。如果需要,还可描述与代理服务器的连接。
如果Internet连接必须在应用过程中保持着,可创建一个类CWinApp的CInternetSession成员。一旦已建立起Internet 会话,就可调用OpenURL。CInternetSession会通过调用全局函数AfxParseURL来为分析映射URL。无论协议类型如何,CInternetSession 解释URL并管理它。它可处理由URL资源“file://”标志的本地文件的请求。如果传给它的名字是本地文件,OpenURL 将返回一个指向CStdioFile对象的指针。
如果使用OpenURL在Internet服务器上打开一个URL,你可从此处读取信息。如果要执行定位在服务器上的指定的服务(例如,HTTP,FTP或Gopher)行为,必须与此服务器建立适当的连接。

‘叁’ C语言编程实现:将一个文件的内容复制到另一个文件。(详细点的,考试用。)谢谢!

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#ifdefBUFSIZ

#undefBUFSIZ

#defineBUFSIZ4096

#endif

/*

使用格式:mcpy源文件目标文件

且目标文件和源文件不能一样,否则会清空文件内容,

源文件必须存在,目标文件可存在也可不存在,如果存在,内容会被覆盖掉。

*/

intmain(intargc,char**argv)

{

charbuf[BUFSIZ];

intmsglen;

if(argc!=3||strcmp(argv[1],argv[2])==0)

/*argc:命令行模式下,输入的参数数目。

argv:第一个参数的首地址。*/

{

fprintf(stderr,"******************************** ");

fprintf(stderr,"Pleaseusage:%ssource_filedestination_file Andsource__file ",argv[0]);

fprintf(stderr,"******************************** ");

exit(0);

}

FILE*fp_src,*fp_des;

if((fp_src=fopen(argv[1],"r"))==NULL)

/*为空,则打开失败*/

{

fprintf(stderr,"open%sfailed! ",argv[1]);

exit(1);

}

if((fp_des=fopen(argv[2],"w"))==NULL)

/*为空,则打开或创建失败*/

{

fprintf(stderr,"open/create%sfailed! ",argv[2]);

exit(2);

}

while(fgets(buf,BUFSIZ,fp_src)!=NULL)

/*从源文件读,读失败或到达文件尾部时,返回NULL*/

{

if(fputs(buf,fp_des)==EOF)

/*写入目标文件,写入失败时,返回EOF;若成功返回写入的字节数*/

{

fprintf(stderr,"%sto%sfailed! ",argv[1],argv[2]);

exit(3);

}

}

printf("%sto%ssuccessful! ",argv[1],argv[2]);

return0;

}

‘肆’ 如何在unix下,c语言中实现ftp文件传输

nt FtpInit(char* Host,char* Account,char* Passwd)
{
short shPortNumber;
long lAddr;
char RecvBuf[1024];
char SendBuf[1024];
int RecvLen,SendLen;

shPortNumber=htons(21);
lAddr=inet_addr(Host);
memset(HostName,0,16);
memcpy(HostName,Host,strlen(Host));
hClient=socket(AF_INET,SOCK_STREAM,0);
if (hClient<0)
{
return -1;
}
if(setsockopt(hClient,SOL_SOCKET,SO_RCVTIMEO,(char *)&rcvtime,sizeof(int)))
{
close(hClient);
return -1;
}

if(setsockopt(hClient,SOL_SOCKET,SO_KEEPALIVE,(char *)&keepalive,sizeof(int)))
{
close(hClient);
return -1;
}
SockAddr.sin_family = AF_INET;
SockAddr.sin_addr.s_addr = lAddr;
SockAddr.sin_port = shPortNumber;

if (connect(hClient,(const struct sockaddr *)&SockAddr,sizeof(SockAddr))<0)
{
close(hClient);
return -1;
}

memset(RecvBuf,0,1024);
if((RecvLen=FtpMatchReceive(hClient,RecvBuf, "220 ",1024))<=0)
{
close(hClient);
return -1;
}
if(SendLen=GetFtpSendBuf("USER",Account,SendBuf,1024)<=0)
{
close(hClient);
return -1 ;
}
if(SendFTPCommand(hClient,SendBuf)!=331)
{
close(hClient);
return -1;
}
if(SendLen=GetFtpSendBuf("PASS",Passwd,SendBuf,1024)<=0)
{
close(hClient);
return -1 ;
}
if(SendFTPCommand(hClient,SendBuf)!=230)
{
close(hClient);
return -1;
}

}
int FtpGetFile(char * FileName)
{
int hListenSocket;
int hDataSocket;
int RetWriteFile;
int ReturnCode;
char RemoteFileName[256];
char RemoteFile[256];
char ExecCommand[256];
char * pcSubDir;

memset(RemoteFileName,0,256);
memset(RemoteFile,0,256);
memset(ExecCommand,0,256);

strcpy(RemoteFileName,FileName);
memcpy(ExecCommand,"CWD ",4);

pcSubDir=strrchr(RemoteFileName,'\\');
if (pcSubDir !=NULL)
{
strncat(ExecCommand,RemoteFileName,RemoteFileName-pcSubDir);
if(SendFTPCommand(hClient,ExecCommand)!=250)
{
close(hClient);
return -1;
}
strcpy(RemoteFile,pcSubDir);
}
else
{
strcpy(RemoteFile,RemoteFileName);
}

if((hListenSocket=CreatListenSocket(hClient))<0)
{
close(hClient);
return -1;
}
if(RequestDataConnection(hClient,hListenSocket)<0)
{
close(hClient);
return -1;
}
memset( ExecCommand,0,256);
memcpy( ExecCommand,"RETR ",5);
strcat( ExecCommand,RemoteFile);
printf("The FileName=%s\n",RemoteFile);
strcat( ExecCommand,"\r\n");

ReturnCode=SendFTPCommand(hClient,ExecCommand);
if(ReturnCode!=150)
{
close(hClient);
return -1;
}
if((hDataSocket=AcceptDataConnection(hListenSocket))<0)
{
close(hClient);
return -1;
}
if((RetWriteFile=WriteFile(hDataSocket,RemoteFile))<0)
{
close(hDataSocket);
close(hClient);
return -1;
}

}

热点内容
李琦访问 发布:2024-12-05 02:09:21 浏览:798
game96游戏安卓版哪里下载 发布:2024-12-05 01:59:32 浏览:447
量子智能算法 发布:2024-12-05 01:46:35 浏览:81
qt编译失败配置没有改变 发布:2024-12-05 01:45:38 浏览:164
access的数据库对象中 发布:2024-12-05 01:42:04 浏览:853
hdfs云存储 发布:2024-12-05 01:36:54 浏览:208
渭南电信宽带密码默认是多少 发布:2024-12-05 01:35:37 浏览:862
怎么连接服务器显示器 发布:2024-12-05 01:35:36 浏览:325
数据库自定义函数 发布:2024-12-05 01:33:46 浏览:504
荣耀魔改存储 发布:2024-12-05 01:32:12 浏览:667