读取文件,如何才能跳过第一行与最后一行

读取文件,怎么才能跳过第一行与最后一行
如题:就是从一个.txt文件读取数据,第一行与最后一行由于不作处理所以所以怎么才能跳过这两行啊?

------解决方案--------------------
C/C++ code

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int main()
{
    FILE* fp1 = NULL;
    char a[1024];
    int i = 0;
    if((fp1=fopen("a.txt","r")) != NULL)
    {
        while(fgets(a, 1024, fp1) != NULL)
        {
            if(i == 0)
            {
                continue;
            }
            //处理每行
            .............
            i++;
        }
        fclose(fp1);
    }
    return 0;
}

------解决方案--------------------
用fgets跳过第一行后逐行读取, 用fgetc检测是否最后一行
C/C++ code

#include <stdio.h>

int main(int argc, char *argv[])
{
    int ch;
    int count;
    FILE *fp;
    char buf[1024];

    fp = stdin;
    /* 跳过第一行 */
    fgets(buf, sizeof(buf), fp);
    count = 1;
    while (fgets(buf, sizeof(buf), fp)) {
        /*  检测最后一行 */
        if (EOF != (ch = fgetc(fp))) {
            ungetc(ch, fp);
            printf("%6d\t%s", ++count, buf);
        } else {
            break;
        }
    }
    return 0;
}

------解决方案--------------------
#include <stdio.h>
int main(int argc,char *argv[])
{
FILE *fp = NULL;
int file_len = 0;
char buf[256];
int line = 0;
if(argc != 2)
{
printf("%s <filename>\n",argv[0]);
return -1;
}
fp = fopen(argv[1],"rb");
if(NULL == fp)
{
printf("open file %s error\n",argv[1]);
return -1;
}
fgets(buf,sizeof(buf),fp);
line ++;
file_len = ftell(fp);
while(fgets(buf,sizeof(buf),fp))
{
if(EOF == fgetc(fp))
{
break;
}
printf("Line:%d,buf:%s\n",line,buf);
line++;
}
if(NULL != fp)
{
fclose(fp);
}
return 0;

}
gcc skip.c
./a.out test.txt
Line:1,buf:122222222222

Line:2,buf:222222222222222

Line:3,buf:22222222222222

Line:4,buf:aaaaaaaaaaaa

cat test.txt
first line
122222222222
1222222222222222
322222222222222
saaaaaaaaaaaa
last line