#include <stdlib.h>
#include <string.h>
#define MaxCols 2000 //设定每行字符数不超过MaxCols,根据变化调整
//获取已经打开文件fp的第line行内容到stri,如果成功返回得到的字节数,
//如果没有那么多行,返回-2
int getlinetxt(FILE *fp,int line,char *stri){
int i
fseek(fp,0,0) //指针到文件最开始
for(i=0i<linei++)
if(fgets(stri,MaxCols,fp)==NULL) //没有这么多行错误
return -2
return strlen(stri)
}
//获取filename文件的第line行内容到stri,如果成功返回得到的字节数,
//如果打开文件失败,返回-1,如果没有那么多行,返回-2
int getfiletxt(char *filename,int line,char *stri){
FILE *fp
if ((fp=fopen(filename,"r"))==NULL){
//打开文件错误,返回-1
return -1
}
return getlinetxt(fp,line,stri)
fclose(fp)
}
int main(){
char s[MaxCols]
int row=10, flag
//以下例子是获取d:\temp.txt的第10行文本内容
flag=getfiletxt("d:\\temp.txt",row,s)
if (flag==-1)
printf("打开文件错误\n")
else if(flag==-2)
printf("文件中的行数不足%d行\n",row)
else
printf("获取到的文本是: \n%s包含最后的换行符,长度=%d\n",s,flag)
}
有的,用 fgets 就可以实现,例程如下:
#include <stdio.h>#include <malloc.h>
int main() {
FILE *fp = fopen("c:\\windows\\DirectX.log", "r")
char *OneLine = (char *)malloc(sizeof(char) * 100)
while (!feof(fp)) {
fgets(OneLine, 100, fp)
puts(OneLine)
}
free(OneLine)
fclose(fp)
return 0
}
用fgets()就可以实现;参考如下:
FILE
*fp
char
str[256]
fgets(str,
256,
fp)
意思为从fp中读一行,放入str中;
如果需要记录行号的话,设定个量计数就可以。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)