
随便创建个txt文档 输入点内容,例如
读取文件内前N个字符:
Action()
{
long myfile;
int count, total=;
char buffer[];
char *filename = "E:\\kkk.txt"; if((myfile=fopen(filename,"r"))==NULL)
{
lr_error_message("%s文件不能打开",filename);
return -;
} while(!feof(myfile))
{
count = fread(buffer,sizeof(char),,myfile);
total = total + count; if(total>=)
{
fclose(myfile);
lr_output_message("前5个字符为%s",buffer);
break;
}
}
return ;
}
LR不支持FILE类型。
fread 函数返回一个整形,表示读取了多少个字符。
取前6行,每行取前5个字符:
(感谢 朱杰 对以下代码指导)
Action()
{
char buffer[];
char head[];
int n=;
long myfile;
char *filename = "E:\\kkk.txt"; if((myfile = fopen(filename,"r"))==NULL)
{
lr_error_message("文件%s不能打开",filename);
return -;
} while(!feof(myfile)&&n<=) { fgets(buffer,,myfile);
strncpy(head,buffer,); lr_output_message("%s文件第%d行的前5个字符为:%s",filename,n,head);
n++; }
fclose(myfile); return ;
}
fgets(存哪个字符数组,几位,从哪个文件取),整行取,根据循环一行行往下取
strncpy(存哪个字符数组,从哪个字符数组copy字符,几位)
取前6行,每行从第3个字符开始取5个字符:
while(!feof(myfile)&&n<=) {
fseek(myfile,,);
fgets(buffer,,myfile);
strncpy(head,buffer,); lr_output_message("%s文件第%d行的5个字符为:%s",filename,n,head);
n++; }
fclose(myf
fseek函数 操作文件 (文件参数,偏移量,1为指针当前位置) ,从3个开始,那就偏移2。 1为指针当前位置,0为文件开始,2为文件结束。
取前6行,每行取末尾5个字符:
通过指针位移来满足需求
while(!feof(myfile)&&n<=) {
fgets(buffer,,myfile);
strncpy(head,buffer+strlen(buffer)-,); lr_output_message("%s文件第%d行的5个字符为:%s",filename,n,head);
n++; }
buffer+strlen(buffer)-6 : 先用strlen取buffer的长度,然后正位移这个长度,但行为换行符,再-6,负位移6位,就指向每行末尾第5个字符了。高大上。