楼主,其实有时候计数不一定要在文件内计数,可以开辟一个变量计数,这样你可能会方便很多,然后我按照一行最长500字符,具体看你文件修改。
#include<stdio.h>#include<stdlib.h>
#define max 500
int main()
{
FILE *fp,*fpx
char yh[max]
int n,m,i=0
scanf("%d%d",&n,&m)
fp=fopen("d:\\test.txt","r")
fp=fopen("d:\\test1.txt","w+")
if(NULL==fp)
{
printf("文件读取失败!")
exit(1)
}
while(fgets(yh,max-1,fp))
{
i++
if(i>=n && i<=m)
{
fputs(yh,fpx)
rewind(fpx)
printf("%s\n",yh)
}
return 0
}
fclose(fpx)
fclose(fp)//关闭文件流
return 0
}
#include"stdio.h"
#include
"string.h"
void
main()
{
int
n
FILE
*fin
char
s[25]
fin=fopen("c:\\a.txt","r")
fgets(s,25,fin)/*用fgets读第一行到数组s中*/
n=strlen(s)
fseek(fin,n+1,SEEK_SET)/*将文件指针移到下一行*/
fgets(s,25,fin)/*读取第二行的字符串*/
printf("%s",s)
}
这个是我写的一个,如果你想读到第n行的话,用一个for循环控制使文件指针移到第n行就行了
#include<stdio.h>//从文件p中接收第n行字串,保存在str中
//假设一行的文本内容不超过1000字符,如果估计超过,请自行修改函数中的1000
//如果打不开文件,返回NULL
//如果文件不足n行,返回NULL
//如果正获得正常数据,返回str的地址
char *getfileline(char *p,int n, char *str){
FILE *fp
int i
if ((fp=fopen(p,"r"))==NULL){
printf("打开文件错误\n")
return NULL
}
for(i=1i<ni++)
if ((fgets(str,1000,fp))==NULL) {
fclose(fp)
return NULL
}
fgets(str,1000,fp)
fclose(fp)
return str
}
int main(){
char p[1000]
getfileline("d:\\temp.txt", 10, p)
puts(p)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)