鱼C论坛

 找回密码
 立即注册
查看: 1451|回复: 5

[已解决]请大佬求助,如何将数据和字符串写入文件中?

[复制链接]
发表于 2022-5-19 16:28:21 | 显示全部楼层 |阅读模式
60鱼币

比如:如何实现  printf("两圆相交的面积为:%.2f", area);   (area经计算得出)的功能。 只是将结果输入到.txt文件,而不是终端上。

代码如下:(该代码在终端上输出,如何改成在文本文件上输出?)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>


#define PI 3.1415926
struct Circle
{
        double x;
        double y;
        double r;
};

struct Circle first, second;


int judge(struct Circle first, struct Circle second)
{
        double distance;

        distance = sqrt((first.x - second.x) * (first.x - second.x) + (first.y - second.y) * (first.y - second.y));

        if (distance > first.r + second.r) //相离
        {
                return 2;
        }
        if (distance == first.r + second.r)  //相切
        {
                return 1;
        }
        if(distance < fabs(first.r - second.r))  //包含
        {
                return 0;
        }
        if (distance == fabs(first.r - second.r)) //内相切
        {
                return -1;
        }
        if (distance > fabs(first.r - second.r) && distance < first.r + second.r) //相交
        {
                return -2;
        }

}

void printResult(int i, FILE *fp)
{
        double s,r;
        double distance = sqrt((first.x - second.x) * (first.x - second.x) + (first.y - second.y) * (first.y - second.y));
        if (i == 2)
        {
                printf("这两个圆相离! 圆间距为:%.2f\n", sqrt((first.x - second.x) * (first.x - second.x) + (first.y - second.y) * (first.y - second.y)) - (first.r + second.r));

        }
        if (i == 1)
        {
                printf("这两个圆相切!");
        }
        if (i == 0)
        {
                r = first.r < second.r ? first.r : second.r;

                printf("这两个圆包含! 重合面积为:%.2f", PI * r * r);
        }
        if (i == -1)
        {
                r = first.r < second.r ? first.r : second.r;

                printf("这两个圆内相切! 重合m面积为:%.2f", PI * r * r);
        }
        if (i == -2)
        {
                double ang1 = acos((first.r * first.r + distance * distance - second.r * second.r) / (2 * first.r * distance));
                double ang2 = acos((second.r * second.r + distance * distance - first.r * first.r) / (2 * second.r * distance));
                s = ang1 * first.r * first.r + ang2 * second.r * second.r - first.r * distance * sin(ang1);
                printf("这两个圆相交! 相交面积为:%.2f\n", s );
        }
}


int main(void)
{
        int i;
        FILE* fp;

        printf("请输入第一个圆的圆心坐标及其半径(x,y,r):");
        scanf_s("%lf,%lf,%lf", &first.x,&first.y, &first.r);

        printf("请输入第二个圆的圆心坐标及其半径((x,y),r):");
        scanf_s("%lf,%lf,%lf", &second.x, &second.y, &second.r);


        i = judge(first, second);

        if ((fp = fopen("file47.txt", "w")) == NULL)
        {
                printf("打开文件失败!\n");
                exit(EXIT_FAILURE);
        }

        printResult(i, fp);

        return 0;
}


最佳答案
2022-5-19 16:28:22
        用 fprintf() 直接代替 printf() 就可以了
fprintf(fp , "两圆相交的面积为:%.2f", area);   
        其实
        printf(“hello, world !\n”) ;
        就是
        fprintf(stdout , “hello, world !\n”) ;

最佳答案

查看完整内容

此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-19 16:28:22 | 显示全部楼层    本楼为最佳答案   
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2022-5-19 16:38:25 From FishC Mobile | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2022-5-19 18:39:08 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

发表于 2022-5-19 21:42:33 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

 楼主| 发表于 2022-5-23 10:59:07 | 显示全部楼层
此帖仅作者可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 14:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表