鱼C论坛

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

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

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

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

代码如下:(该代码在终端上输出,如何改成在文本文件上输出?)

  1. #include<stdio.h>
  2. #include<math.h>
  3. #include<stdlib.h>


  4. #define PI 3.1415926
  5. struct Circle
  6. {
  7.         double x;
  8.         double y;
  9.         double r;
  10. };

  11. struct Circle first, second;


  12. int judge(struct Circle first, struct Circle second)
  13. {
  14.         double distance;

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

  16.         if (distance > first.r + second.r) //相离
  17.         {
  18.                 return 2;
  19.         }
  20.         if (distance == first.r + second.r)  //相切
  21.         {
  22.                 return 1;
  23.         }
  24.         if(distance < fabs(first.r - second.r))  //包含
  25.         {
  26.                 return 0;
  27.         }
  28.         if (distance == fabs(first.r - second.r)) //内相切
  29.         {
  30.                 return -1;
  31.         }
  32.         if (distance > fabs(first.r - second.r) && distance < first.r + second.r) //相交
  33.         {
  34.                 return -2;
  35.         }

  36. }

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

  44.         }
  45.         if (i == 1)
  46.         {
  47.                 printf("这两个圆相切!");
  48.         }
  49.         if (i == 0)
  50.         {
  51.                 r = first.r < second.r ? first.r : second.r;

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

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


  67. int main(void)
  68. {
  69.         int i;
  70.         FILE* fp;

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

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


  75.         i = judge(first, second);

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

  81.         printResult(i, fp);

  82.         return 0;
  83. }
复制代码



最佳答案
2022-5-19 16:28:22
        用 fprintf() 直接代替 printf() 就可以了
  1. fprintf(fp , "两圆相交的面积为:%.2f", area);   
复制代码

        其实
  1.         printf(“hello, world !\n”) ;
复制代码

        就是
  1.         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-4-26 20:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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