函数说明
- void PrintFileOfPosition(int position_file,char * src_file),参数1为指定位置,参数2为文件名。
- 文件读取方式为行读取,所以读完一行要记录该行字符的数量,方便找到指定位置所在行。
- while (scanf("%d",&position_file))循环输入指定位置,直到输入非数字类型。
函数实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_LINE 1024
/**
* 打印文本指定位置所在行内容
* @param position_file
* @param src_file
*/
void PrintFileOfPosition(int position_file,char * src_file)
{
FILE* fp; //文件指针
char buffer[MAX_LINE] ; //缓冲区
int len=0,len_m=0,len_n=0;
int i;
fp = fopen(src_file,"r");
if(fp == NULL){
printf("cannot open file!");
exit(0);
}
//读取文件内容
while(! feof(fp)){
// fgets() 在读出 MAX_LINE 个字符之前,遇到 换行符 或 EOF 则读出结束
if(fgets(buffer, MAX_LINE, fp) != NULL){
len_n=len_m;//该行之前读取的字符数量
len = strlen(buffer);
len_m+=len;//包括该行已读取的字符数量
if((position_file > len_n) && (position_file <= len_m))
{//找到文本中的指定位置
for(i = position_file-len_n; i < len; i++){
printf("%c",buffer[i]);
}
}
}
}
if(position_file > len_m)
printf("超出文本范围!\n");
fclose(fp);
}
int main(int argc, char *argv[]) {
char file_name[20];
char buffer[MAX_LINE];
int position_file=0;
printf("请输入需要打开的文件名:");
scanf("%s",&file_name);
fflush(stdin);
PrintFileOfPosition(position_file,file_name);
printf("请输入需要需要打印的位置:");
while (scanf("%d",&position_file))
{
PrintFileOfPosition(position_file,file_name);
printf("请输入需要需要打印的位置:");
}
return 0;
}
运行实现
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)