hehe ..这是因为FTP跟HTTP根本不是同一种类型服务器。FTP专门是用来下载上传用的,可以算做一个网络硬盘吧..而HTTP服务器一般是WEB服务器..性质完全不一样,就好象你家里的厨房和厕所一样,功能完全不一样嘛你总不可能在厕所想做饭,在厨房想上厕所对不对,没有任何办法..你只能按最直接的地址下载
如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快! vae.la
2. 用C语言如何将结果输出到一个文本文件中保存
文件的操作步骤:
#include <stdio.h> #include <stdlib.h> int main()
{
FILE *fp;
int i, d;
fp=fopen("data.txt","w");
if(fp==NULL)
{
printf("File cannot open! " );
exit(0);
}
for(i=0; i<10; i++)
{
scanf("%d", &d);
fprintf(fp,"%d ", d);
}
fclose(fp);
return 0;
}
格式化输出:
#include <stdio.h> #include <stdlib.h> int main()
{
FILE *fp;
int i, No;
float salary;
fp=fopen("data.csv","w");
if(fp==NULL)
{
printf("File cannot open! " );
exit(0);
}
//输入5名员工的工号,并保存到文件中
for(i=0; i<5; i++)
{
scanf("%d %f", &No, &salary);
fprintf(fp,"%d, %.2f ", No, salary);
}
fclose(fp);
return 0;
}
(2)c语言http下载文件扩展阅读:
从文件中读取字符:
#include <stdio.h> #include <stdlib.h> int main()
{
FILE *fp;
char c;
if ((fp=fopen( "data.dat" , "r" ))==NULL)
{
printf("File cannot open!");
exit(0);
}
while((c=fgetc(fp))!=EOF)
putchar(c);
fclose(fp);
return 0;
}
3. c语言截取下载url中文件名称
思路大概如下:将整个字符串及其长度传给函数,然后在函数中用指针接收字符串,利用其长度把指针移到字符串结尾处,然后用循环不断将指针向前移动,并判断其指向的字符与/是不是一样的,如果一样退出循环,此时指针指向着字符串中最后一个/ 的前一个字符, 因此最后将指针再向前移2位到/后面的一个字符,最后反回指针, 再输出返回的指针后面的内容就是名称了
函数声明:char* GetName(char*,int);
整个程序:
#include<stdio.h>
char* GetName(char*,int);
int main(void)
{
char str[] = "https://gss0.bdstatic.com/70cFsjip0QIZ8tyhnq/img/logo-.gif";
char *name;
int n;
n = sizeof(str); //计算字符串的长度(包括'\0')
name = GetName(str,n); //把字符串及其长度传给函数
printf("%s\n",name); //name就是那个名称,可以输出
return 0;
}
char* GetName(char*ptr,int n)
{
int i = n; //这里i只是为循环即使终止了也未找到/而准备
ptr+=n; //把指针移到字符串的尾部,即'\0'处
while(i-->0)
{
if((*ptr--) == '/') //指针不断回移并判断是否为/符号
{
break; //从后向前遇到第一个/后退出循环
}
}
ptr+=2;
return ptr; //反回最后一个/后面的字符串即名称
}
函数原型:
char* GetName(char*ptr,int n)
{
int i = n;
ptr+=n;
while(i-->0)
{
if((*ptr--) == '/')
{
break;
}
}
ptr+=2;
return ptr;
}
4. 用c语言写一个http头文件查找函数。
#include <stdio.h>
char * xxx(char *all, char *target){
int i,j,k;
static char t[80];
j = strlen(all);
k = strlen(target);
printf("j=%d k=%d\n",j,k);
for (i=0;i<j-k-1;i++){
if (strncmp(&all[i],target,k)==0) { sscanf( &all[i+k+1],"%s",t);
printf("t = %s\n",t);
break;}
}
return t;
}
main(){
char all[]="GET / HTTP/1.1 Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 Sec-WebSocket-Key: mHCYmHhGCn44x+g6quuzYg== Cache-Control: no-cache";
char txt[]="Sec-WebSocket-Key:";
char trs[80];
printf("%s",xxx(all,txt));
}
---------
注意 char all[]=" ...." ; 写在1行,或通过文件读入。
char txt[]="Sec-WebSocket-Key:"; 字符串里的冒号不要漏掉,
若不写冒号,计算sscanf位置 时要再加1。sscanf( &all[i+k+2],"%s",t);
5. 如何用c语言实现http服务器
//服务端简易代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<err.h>
#include<event.h>
#include<evhttp.h>
voidhttp_handle(structevhttp_request*req,void*arg);/*HTTPRequestHandle*/
intmain(){
structevhttp*httpd;
event_init();
httpd=evhttp_start("0.0.0.0",2345);
if(httpd==NULL){
fprintf(stderr,"Error:Unabletolistenon%s:%d ");
exit(1);
}
evhttp_set_timeout(httpd,2000);
evhttp_set_gencb(httpd,http_handle,NULL);
event_dispatch();
evhttp_free(httpd);
return0;
}
voidhttp_handle(structevhttp_request*req,void*arg){
structevbuffer*buf;
buf=evbuffer_new();
/*Responsetheclient*/
evhttp_send_reply(req,HTTP_OK,"OK",buf);
//evbuffer_add_printf(buf,"%s","HTTPSQS_AUTH_FAILED");
/*Releasethememory*/
evbuffer_free(buf);
fprintf(stderr,"Send ");
}
编译:编译时把libevent的类库中的.so文件和.h文件连接进来。
6. c语言下载在http服务器上的文件。
URLDownLoadToFile或URLDownloadToCacheFile,可以将文件下载到文件
例子:
URLDownloadToFile(NULL,/*URL*/, "C:\\1.dat", 0, NULL);
URLDownloadToCacheFile(NULL,
/*URL*/,
/*用于保存文件位置的字符数组*/,
/*上一个参数的大小*/,NULL,NULL);
7. linux下C语言怎么读取http文件内容
http是协议
不是文件
你这个说法就有问题了。
如果你想用C读网页 可以考虑使用socket 不过还是有些麻烦的。
8. 用C语言编写一个从网上下载专辑图片的程序,求大概的怎么编写。或者具体代码。
1.首先要确定数据来源,也就是说你要从哪个网站或者站点获取相应的图片数据。
2.然后需要了解到相应站点获取图片的方式,如果是专用的站点那么应该由相应的api供别人使用,如果只是普通的符合HTTP协议的站点,那么你应该在了解http协议的基础上进行网络文件的获取。
3.这个过程中肯定会使用到网络编程,那么就应该会使用到socket,这也是你需要了解的。
9. 用C语言实现从指定的地址下载一个文件吗,并自解压
有两种实现方式
1)就是用system来运行命令,比如system("wget http://abc.com/test.rar"); 然后system("unrar x test.rr");。。。。其实这种方式就和写脚本差不多
2)如果完全自己编程,那么就要用到各种库文件了。比如下载你可以使用libcurl,rar解压你可以用libunrar,输入用户存储路径,你用scanf输入,然后根据系统的不同(windows或者linux)调用系统api来创建目录,显示下载进度,你可以先获得该文件的大小,然后根据已下载的数据量和文件大小计算进度
你确定要集体的代码吗?