读取文件,如何才能跳过第一行与最后一行
读取文件,怎么才能跳过第一行与最后一行
如题:就是从一个.txt文件读取数据,第一行与最后一行由于不作处理所以所以怎么才能跳过这两行啊?
------解决方案--------------------
如题:就是从一个.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