六边形D 2023-11-13 19:52 采纳率: 100%
浏览 5
已结题

c语言基础之文件调用函数的使用疑问

#对于c语言文件中,文件调用部分的内容不理解
请为我阐述以下问题:
1.字符串读取函数中,若遇到换行符或文件尾,字符串指针s中会写入文件的值吗,返回的空指针指的是返回一个新的指针p指向空指针还是s指向空指针。
2.格式化读/写函数的实例,不要模型要一个完整的片段
3.数据块读/写函数的实例,同上

  • 写回答

3条回答 默认 最新

  • 关注

    (1)如果遇到换行符或者文件尾,s中是否有数据是根据具体情况来定的,比如
    fscanf(fp,"%s %d",s,&a); 这个代码读取一个字符串和一个int类型,但是如果文件中只有一个字符串就遇到了文件结束符,那么s是可以正确读取字符串的,但是a没有正确读取。如果遇到的是回车符,s也是能正确读取到的,a是否能正确读取,取决于下一个数据是否是整数。
    如果是fscanf(fp,"%s",s)这种,如果遇到换行符,s中读取的是空行(空行不是空指针)。如果遇到的是文件结束符,读取就失败,s中就没有读取文件中的内容。
    fscanf不会返回空指针,s就是你传入的指针,指针不会改变!改变的只是s指针指向的内存中的值。
    fscanf的返回值是正确读取元素的个数。
    (2)fscanf和fprintf的使用如下所示。

    运行结果说明:

    img

    示例代码如下:

    #include <stdio.h>
    int main()
    {
        char filename[100]={0},dstFile[100]={0};
        FILE* fp = 0,*fp2=0;
        char s[100]={0};
        int a,b;
        double c,d;
        int res;
        printf("请输入文件名:");
        scanf("%s",filename); //读取需要读的文件名
        printf("请输入要写入的文件名:");
        scanf("%s",dstFile);
        fp = fopen(filename,"r"); //以读方式打开文件
        fp2 = fopen(dstFile,"w"); //以写方式打开文件
        while(!feof(fp))
        {
            res = fscanf(fp,"%s %d %lf",s,&a,&c); //读取数据,res记录正确读取的数据个数
            //将读取的内容写入目的文件
            fprintf(fp2,"%s\t%d\t%lf\n",s,a,c); //将读取的数据写入目的文件,数据之间用Tab分隔
        }
        fclose(fp);
        fclose(fp2);
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月21日
  • 已采纳回答 11月13日
  • 创建了问题 11月13日

悬赏问题

  • ¥15 使用autodl云训练,希望有直接运行的代码(关键词-数据集)
  • ¥50 python写segy数据出错
  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥30 3D多模态医疗数据集-视觉问答
  • ¥20 设计一个二极管稳压值检测电路
  • ¥15 内网办公电脑进行向日葵
  • ¥15 如何输入双曲线的参数a然后画出双曲线?我输入处理函数加上后就没有用了,不知道怎么回事去掉后双曲线可以画出来
  • ¥50 WPF Lidgren.Network.Core2连接问题
  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术