KinoluKaslana 2016-11-06 08:53 采纳率: 50%
浏览 3679
已采纳

C语言中,有没有办法让数组(结构体)数据保存到一个文本文档或者是其他的什么的里面

一个可以做到让机器读取玩这个文件内容后自动获取了这个数组的数据的方法。

  • 写回答

5条回答 默认 最新

  • voidar 2016-11-07 03:06
    关注

    #include
    #include

    /*结构体定义*/
    struct stdTmp{
    char user[16]; //用户名
    char pasd[16]; //密码
    unsigned char age; //年龄
    };

    /*
    函数名称:std_write
    函数功能:将结构体,写入文件
    传入参数:
    const char *_file_path 文件路径
    const struct stdTmp *_std 要写入的结构体
    传出数据:
    0 运行成功
    -1 输入参数有误
    -2 打开文件失败
    -3 文件写入数据失败
    注意事项:如果结构体过大的话,建议修改"写入结构体"区域,分片写入
    编写人员:voidar
    编写时间:2016-11-07
    */
    int std_write(const char *_file_path, const struct stdTmp *_std){
    FILE *fp = (FILE *)0x00; //文件操作

    /*参数校验*/
    if(!_file_path || !strlen(_file_path) || !_std) return -0x01;
    
    /*打开文件*/
    if( !(fp = fopen(_file_path, "wb+")) ) return -0x02;
    
    /*写入结构体*/
    if(fwrite((const void *)_std, sizeof(struct stdTmp), 0x01, fp) != 0x01) { fclose(fp); return -0x03; }
    if(fflush(fp)){ fclose(fp); return -0x04; }
    
    /*关闭文件*/
    fclose(fp);
    
    return 0x00;
    

    }

    /*
    函数名称:std_read
    函数功能:从文件中读取结构体
    传入参数:
    const char *_file_path 文件路径
    struct stdTmp *_std 读取到的结构体体存储到该指针指向的结构体中
    传出数据:
    0 运行成功
    -1 输入参数有误
    -2 打开文件失败
    -3 文件内容有误(长度不合法)
    注意事项:无
    编写人员:voidar
    编写时间:2016-11-07
    */
    int std_read(const char *_file_path, struct stdTmp *_std){
    FILE *fp = (FILE *)0x00; //文件操作

    /*参数校验*/
    if(!_file_path || !strlen(_file_path) || !_std) return -0x01;
    
    /*打开文件*/
    if( !(fp = fopen(_file_path, "rb+")) ) return -0x02;
    
    /*读取文件*/
    if(fread((void *)_std, sizeof(struct stdTmp), 0x01, fp) != 0x01){ fclose(fp); return -0x03; }
    
    /*关闭文件*/
    fclose(fp);
    
    return 0x00;
    

    }

    int main(){
    int err = 0x00;
    struct stdTmp mystd = {"admin", "123456", 12};
    struct stdTmp getstd;

    /*写入结构体*/
    if(err = std_write("stdFile.txt", &mystd)){ printf("write error:%d\n", err); return err; }
    
    /*读取结构体*/
    if(err = std_read("stdFile.txt", &getstd)){ printf("read error:%d\n", err); return err; }
    
    /*显示获取到的数据*/
    printf(
        "用户名:%s\n密码:%s\n年龄:%d\n",
        getstd.user,
        getstd.pasd,
        getstd.age
    );
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)