C 按行读取文件(但是最后一行会多输出一行) #include <stdio.h> int main() { char filename[] = "E:\\data_test\\commands.txt"; //文件名 FILE *fp; char StrLine[1024]; //每行最大读取的字符数 if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读 { printf("error!"...
c语言读取文件最后一行定位问题 c语⾔读取⽂件最后⼀⾏定位问题fseek函数可以在fopen打开的⽂件中直接移动到任意字节处,函数原型: int fseek(fp,0L,SEEK_SET);fseek 函数第⼀个参数是要操作的⽂件指针,第⼆个是定位的偏移量,long类型,第三个参数是模式。例如: fseek ( fp, 0L,SEEK_SET...
c function file 我试图思考如何读取文件最后一行的逻辑,但我想不出答案。ACCOUNTNUM info是一个结构。我的已经有3个acc号码的dat文件。在这里,我想知道如何获得最后一个账号/行,即2022-3。 这就是功能 LastAccountNumber(){ ACCOUNTNUM info; file = fopen("acctNumbers.dat","r"); char firstAcc[50]="2...
c语言读取文件最后一行定位问题 fseek函数可以在fopen打开的文件中直接移动到任意字节处, 函数原型: int fseek(fp,0L,SEEK_SET); fseek 函数第一个参数是要操作的文件指针,第二个是定位的偏移量,long类型,第三个参数是模式。 例如: fseek ( fp, 0L,SEEK_SET); 定位到文件开始处。 fseek ( fp,+10L,SEEK...
1 字节处fseek(fp, i, SEEK_END);//读取一个字符ch = fgetc(fp);//如果读取的字符不等于换行,如果等于换行说明是最后一行的上一行的换行符while (ch != '\n'){//文件内部指针从文件结尾向前移动i--;fseek(fp, i, SEEK_END);ch = fgetc(fp);}i = 0;ch = fgetc(...
如果想自由地读取txt文档任意位置,就只能使用随机读写数据文件的方式来读与写的操作。因为C语言里的随机读写数据文件提供了 “文件位置标记”和定位的相关函数。例如:rewind函数使文件位置标记指向文件开头 fseek函数改变文件位置标记,其中该函数的原型为:fseek(文件类型指针,位移量,起始点);如果仅仅是想...
读多一行的原因是你goods.txt里面多了一个回车,你看下你goods.txt里面是不是在最后一行多了个\n,删去就能读正确了。不过你写也错误。fprintf(p,"%d %s %.2f\n",ta.num,ta.name,ta.price);这句写出,你开头应该用\n而不是在写完再\n 改为:fprintf(p,"\n%d %s %.2f",ta.num,ta....
问题出在这里:while (!feof(fp1))前没有读取文件的语句,feof(fp1)要在逻辑上跟在读语句之后才能正确判断,你还没有读文件,判断什么结束没有不就多出一行了?改法很多,最简单的是把while (!feof(fp1))改成while (1),在fscanf语句后面加一句加一句if(feof(fp1)) break;。
用fseek定位到文件末尾 并且逐字符读取,读一次就手动fseek到前一个字符,直到读到回车换行就丢弃该字符并结束 然后将读到的所有字符反序就是需要的最后一行数据了
其实feof() 这个函数是当读到文件结束符就返回 true 值,而非到文件最后一个字符,所以当读完文件最后一个字符时,如果后面还有换行或者空格的时候, 他会继续循环。所以就会多把最后循环一次。解决的方法其实很简单!!只需要把fgets放到while哪里判断就OK了!!