吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1324|回复: 10
收起左侧

[求助] 最后一步实现文件写入怎么做

[复制链接]
回帖奖励 3 CB吾爱币 回复本帖可获得 1 CB吾爱币奖励! 每人限 1 次
Leon19960120 发表于 2021-12-20 20:08
本帖最后由 Leon19960120 于 2021-12-20 20:11 编辑

请使用该结构体,编写一个简单的程序,要求输入60个学生的学号、姓名、中文成绩,数学成绩后,计算出该同学的总分。然后把这60个学生的学号、姓名、中文成绩,数学成绩和总分保存到stu.txt文件中。
[C] 纯文本查看 复制代码
#include<stdio.h>
#define N 1
struct student
{
        int  Num;          /*学号*/
                char Name[20];     /*姓名*/
                float Chinese;     /*中文成绩*/
                float Math;       /*数学成绩*/
                float Tscore;     /*总分*/

};
int main()
{
        struct student stu[N];
        int i; float ave = 0;
        printf("请输入学生学号、姓名、中文成绩和数学成绩:\n");


        for (i = 0; i < N; i++)
        {
                scanf("%d%s", &stu[i].Num, stu[i].Name);
                getchar();
                scanf("%f%f", &stu[i].Chinese, &stu[i].Math);
                stu[i].Tscore = stu[i].Chinese + stu[i].Math;
         printf("%.2f\n", stu[i].Tscore);
        }
return 0;
}


还有问一下代码中的getchar();的目的是什么

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wihn 发表于 2021-12-20 20:16

回帖奖励 +1 CB吾爱币

[C] 纯文本查看 复制代码
FILE * f=fopen("stu.txt","w");
fprintf(f,"格式控制",参数列表);

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ncu.xxy + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

wihn 发表于 2021-12-20 20:17
你输入了学号和姓名之后应该会敲一下回车,那个getchar就是把这个回车读进去。
 楼主| Leon19960120 发表于 2021-12-20 20:50
wihn 发表于 2021-12-20 21:02
Leon19960120 发表于 2021-12-20 20:50
fprintf(f,"格式控制",参数列表);
这个需要自己填写参数吗

这里的参数就把它当作printf()来填写就可以了。
小能维尼 发表于 2021-12-20 22:35

回帖奖励 +1 CB吾爱币

如果我没记错的话
windows的回车包含两个控制字符 \n\r
getchar() 好像是接收 \r吧。(我也不太清楚了)
这个东西你试一试就知道了
Joe1921567817 发表于 2021-12-20 23:45

回帖奖励 +1 CB吾爱币

本帖最后由 Joe1921567817 于 2021-12-20 23:50 编辑

今天刚刚好C语言实验课写的就是这个这是我们的代码,结构体大同小异,还有就是arrTeacher改成stu,nTeacher改成N
不过我们用的是iostream和fstream,可能要改一下,仅供参考



至于getchar();我个人猜测可能是为了清空输入缓冲区
scanf() 的缓冲区有时会引发奇怪的问题,多个 scanf() 之间要注意清空缓冲区。清空缓冲区主要有两种思路:一是将缓冲区中的数据丢弃,二是将缓冲区中的数据读取出来,但是却不使用。

参考:https://blog.csdn.net/weixin_42528287/article/details/85957394



代码如下:
这两行加在开头:
[C++] 纯文本查看 复制代码
#include <fstream>
#include <iostream>

主要代码部分:
[C++] 纯文本查看 复制代码
    char fileName[]="stu.txt"; //要保存的文件的名称
    ofstream fout(fileName);//打开文件以供写入
    if (!fout)//处理打开失败的情况(打开失败则fout变量值为空)
    {
        cout << "文件打开失败!" << endl;
        system("pause"); // 等待按任意键后关闭运行窗口
        return 0;          // 返回
    }
    for (int i = 0; i <= nTeacher-1; i++)//遍历整个数组,逐行写出每一条记录
    {
        fout << "第" << i+1 << "位老师信息:" << endl;
        fout << "姓名:\t\t" << arrTeacher[i].name << endl;
        fout << "学号:\t\t" << arrTeacher[i].no << endl;
        fout << "密码:\t\t" << arrTeacher[i].password << endl;
        fout << "性别(0为女,1为男):\t" << arrTeacher[i].sex << endl;
        fout << "生日:" << endl;
        fout << "年:\t\t" << arrTeacher[i].birthday.year << endl;
        fout << "月:\t\t" << arrTeacher[i].birthday.month << endl;
        fout << "日:\t\t" << arrTeacher[i].birthday.day << endl;
        fout << "学历:\t\t" << arrTeacher[i].education << endl;
        fout << "职称:\t\t" << arrTeacher[i].academicTitle << endl;
        fout << "电话:\t\t" << arrTeacher[i].telephone << endl;
        fout << "E_mail:\t\t" << arrTeacher[i].e_mail << endl;
        fout << "QQ号:\t\t" << arrTeacher[i].qq << endl << endl;
    }
    fout.close();//关闭文件
    cout<<"写出已完成。"<<endl;
detewhkn 发表于 2021-12-21 00:58

回帖奖励 +1 CB吾爱币

用fprintf函数就可以把结构体写到文件里
liyitong 发表于 2021-12-21 09:09

回帖奖励 +1 CB吾爱币

本帖最后由 liyitong 于 2021-12-21 09:11 编辑

[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>

int main()
{
   FILE * fp;

   fp = fopen ("file.txt", "w+");
   fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);
   
   fclose(fp);
   
   return(0);
}

第09行。printf是把信息输出到cmd中,fprintf是把内容输出到文件中。
相对于printf来讲,fprintf的第一个参数是要写入的文件的指针,后面的就是完全的printf的用法。
hhhsssssshhh 发表于 2021-12-21 11:40

回帖奖励 +1 CB吾爱币

不太清楚 下载那这样在那样
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 17:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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