文件读取练习题的问题

fantasy408 2017-11-19 09:13:04
大家好,在练习文件读取时,有一个例子:

#include "stdio.h"
#include "stdlib.h"

int main(void)
{
char str[10]={};
FILE *fp,*fp2;
if((fp=fopen("test.txt","r"))==NULL)
{
printf("cannot open this file.\n");
exit(0);
}
if((fp2=fopen("test2.txt","w"))==NULL)
{
printf("cannot open this file.\n");
exit(0);
}
while(!feof(fp))//设置断点的行
fputc(fgetc(fp),fp2);
fgets(str,3,fp);//出问题的地方
printf("%s",str);
fclose(fp);
fclose(fp2);
return 0;
}

test.txt里放的是aaaa\n
先是将test.txt中的内容拷贝到test2.txt中,接着将test.txt头2个字符拷贝到str数组里。
但是运行结果是str里什么也没有。
文件指针fp不是始终指向文件开头吗?我在codeblocks里将断点设置到while行,debug时看到fp的内容不变化。
文件内容拷贝结束后,运行fgets,为何str里会没有值呢?
...全文
131 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-11-20
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char str[10] = {0};
    FILE *fp,*fp2;
    if((fp=fopen("test.txt","r"))==NULL)
    {
        printf("cannot open this file.\n");
        exit(0);
    }
    if((fp2=fopen("test2.txt","w"))==NULL)
    {
        printf("cannot open this file.\n");
        exit(0);
    }
    while(!feof(fp))//设置断点的行
        fputc(fgetc(fp),fp2);
    rewind(fp);    /* or fseek(fp, 0l, SEEK_SET);*/
    fgets(str,3,fp);//出问题的地方
    printf("%s",str);
    fclose(fp);
    fclose(fp2);
    return 0;
}
改一下fp的位置,使用rewind或fseek
paschen 2017-11-19
  • 打赏
  • 举报
回复
fp这个指针的值不会变,但文件位置指针会变化(不是fp),你读一个字节就往后移动一个,你可以用fseek设置文件指针位置,可以用ftell得到文件指针离开头的偏移距离
 本套课程为Python基础篇的第4套课程,主要讲解python文件处理的系统知识体系。       首先讲解Python文件的概念以及常用读写函数open()、Read()、write()、close()以及文件读写访问标志。 其次讲解文件的典型应用文件的复制算法,以及with as 关键字简化资源关闭。本课程末尾讲解文件与目录的创建、删除、重命名、文件与目录的绝对路径与相对路径技术等。       课程末尾需要重点说明的是,本系列课程均设置课堂练习与课后作业集中讲解(录播形式),让初学者通过大量练习与阶段项目等手段有效强化学习效果,保证学习过程中的技能全面提升!教学特点:      使用大量(3D/2D)动画与图示方式,由浅入深讲解Python编程。配之海量课堂练习/课后作业的大量讲解,以及刘老师风趣幽默的课堂幽默感染力,让你轻松加愉悦的心情下开启Python系统学习之旅,系统与深入掌握当今最为火热的人工智能御用编程语言!      本Python教程分为入门、基础、中级、进阶篇,共15套教程组成。突出教学特点如下:      1:为弥补线下“互动性”与知识点的高“吸收率”,每套课程均设置“课堂练习”、“课后作业”、“阶段项目实战”、以及每个章节末尾的“课程笔记”整理环节,不断强化学员知识点的不断巩固与知识体系的梳理,不遗漏任何重要知识点。 以上四大自学环节设置,保证自学过程中知识的反复锤炼与全面吸收,最终获得优秀学习效果!      2:本Python系列课程(15套)从入门篇开始,完全从真正零基础开始讲起,特别适合中小学生以及大学非计算机专业的初学者开始入门!      3:大量采用3D/2D图形化示例讲解,对于Python抽象与复杂问题全部采用3D动画演示。      4:每套课程开始均设置“课程概述”: 讲解本套课程的前导课程、后续课程,以及本套课程的知识体系内容,帮助学习者更好的掌握课程的来龙去脉。             更多学习内容以图示方式供广大学员参考如下:

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧