首页 > 用户发贴区 > 编程问题提问区 > 关于用C读取TXT文件的指定行问题,搞定不了
2008
11-25

关于用C读取TXT文件的指定行问题,搞定不了

已知如下程序,我在单位搞网络的,就大学的时候学过一点C,今天领导临时抓我来编
,不胜感激,临帖涕零…… 需求是读取指定行指定位置的内容有可能是字符也有可能是数字!
但是之后在UNIX下的C执行之后报错,貌似没有new 这个函数,也没有conio.h这个头文件啊,能不能帮改进一下。但是我使用的是UNIX上的VI编写,貌似没有conio.h的头文件跟NEW函数,那个高人帮我改写一下啊!不胜感激
#include <stdio.h>
#include <string.h>
#include <conio.h>


void main()
{
char *pBuff;
FILE *pf = fopen(“data.txt”,”rb”);
fseek(pf,0,SEEK_END);
int len =ftell(pf);
if(len==0)
{
printf(“文件是空的\n”);
fclose(pf);
return;
}


pBuff = new char[len];
memset(pBuff,0,len);
fseek(pf,0,SEEK_SET);
fread(pBuff,len,1,pf);
fclose(pf);


char *pBuffLine = new char[len];
char *pos;
pos = pBuff;
int i,j=0;
int linelen;
printf(“行号:”);
int LineNum;
scanf(“%d”,&LineNum);
int num =0;
for(i=0;i<len;i++)
{
if(*pos == 0xD && *(pos+1) ==0xA)
{
num++;
linelen = pos -(pBuff+j);
memset(pBuffLine,0,len);
memcpy(pBuffLine,pBuff+j,linelen);
*(pBuffLine+linelen)=0;
if(num == LineNum)
{
printf(“%s\n”,pBuffLine);
return;
}
pos+=2;
j=pos-pBuff;
continue;
}
pos++;
}


if(j!=len)
{
num++;
linelen =len-j;
memset(pBuffLine,0,len);
memcpy(pBuffLine,pBuff+j,linelen);
*(pBuffLine+linelen)=0;
if(num == LineNum)
{
printf(“%s\n”,pBuffLine);
return;
}
}



}


关于用C读取TXT文件的指定行问题,搞定不了》有 2 条评论

  1. xstar 说:

    new是C++的关键字!不是C语言的.

  2. hiroki 说:

    我来看一看啊

留下一个回复