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來創建目錄,顯示下載進度,你可以先獲得該文件的大小,然後根據已下載的數據量和文件大小計算進度
你確定要集體的代碼嗎?