69,370
社区成员
发帖
与我相关
我的任务
分享
//有一个文件,文件名为res.tmp, 文件的内容大致如下:
//HTTP/1.1 200 OK
//x-amz-id-2: 0JyU0vplRfktQK7UM4U1/vU5ivCeeJr35wvD6dr5Qg7zJSi2o61DWPn2HIe3GtDQ
//x-amz-request-id: 45F82E21E6C93CD7
//-----------这里省略了几行--------------------
//Date: Tue, 07 Sep 2010 14:11:31 GMT
//Last-Modified: Mon, 30 Aug 2010 02:24:46 GMT
//Content-Length: "df7aba564cc65f7841b07981b346dc21"
//Content-Type: binary/octet-stream
//Content-Length: 5046743
//Server: AmazonS3
//
//我想实现的是把文件中的Last-Modified和Content-Length标记的value值读出来存入一个结构体变量里,
//譬如放到struct header head里, 使得
//header.Last_Modified = Mon, 30 Aug 2010 02:24:46 GMT
//header.Content_Length=5046743
#include <stdio.h>
#include <string.h>
struct head {
char Last_Modified[30];
unsigned long Content_Length;
} header;
FILE *f;
#define MAXLN 256
char ln[MAXLN];
unsigned long n;
char s[MAXLN];
unsigned long len;
int main() {
f=fopen("res.tmp","r");
if (NULL==f) {
printf("Can not open res.tmp!\n");
return 1;
}
n=0;
while (1) {
if (NULL==fgets(ln,MAXLN,f)) break;
if (NULL==strchr(ln,'\n')) {
while (1) {
if (NULL==fgets(ln,MAXLN,f)) break;
if (NULL!=strchr(ln,'\n')) break;
}
if (feof(f)) break;
else {
n++;
printf("%lu SKIP long (>%d characters) line\n",n,MAXLN);
continue;
}
} else {
n++;
if (1==sscanf(ln,"Last-Modified: %[^\n]",s)) {
strncpy(header.Last_Modified,s,29);header.Last_Modified[29]=0;
printf("%lu OK to read Last-Modified: %s\n",n,header.Last_Modified);
} else if (1==sscanf(ln,"Content-Length: %lu",&len)) {
header.Content_Length=len;
printf("%lu OK to read Content-Length: %lu\n",n,header.Content_Length);
} else {
printf("%lu\n",n);
}
}
}
fclose(f);
return 0;
}