收藏文章 楼主

c++ 文件读写

版块:C/C++语言开发   类型:普通   作者:小绿叶技术博客   查看:1789   回复:0   获赞:4   时间:2023-01-31 12:34:39



#include <iostream>
#include <cstring>
#include <string>
#include <stdlib.h>                 // system 命令使用头文件
#include <fstream>                  // 读写文件 

/*------ mkdir 命令 ------*/
#include <sys/stat.h>
#include <sys/types.h>
#include <cstddef>

using namespace std;                // 命名空间, cout end1 等依赖 std 命名空间

//int cishu=1200;
//int shijian=300;

char DirServer[30]="/datadisk/eisc/server/";
char AnfangDir[99]="anfang";
char logname[20]="eisc_anfang_log.txt";
// 不给长度,系统默认会定义长度,会导致错误,因此需要给长度
char MkdirSh[99]="sudo mkdir -p ";
char ChmodSh[99]="sudo chmod 777 -R ";

//char eiscshuom[50]="this is eisc anfang xitong + - =";
char eiscshuom[50]="#---------- eisc ------------#";

/*----------  创建所有服务安装文件夹 -----------*/
int log_run()
{
    strcat( MkdirSh, DirServer);
    strcat( ChmodSh, DirServer);
    // 注意:前面定义了变量,需要再函数里面进行赋值追加字符串,否则错误

    system(MkdirSh);
    system(ChmodSh);
    cout << "\n mkdirsh is : " << MkdirSh ;
    cout << "\n chmodsh is : " << ChmodSh;

    return 0;                                               // 终止函数,并且反馈该函数的值为0; return 0 正常退出,return 1 异常退出 ,  return -1 函数失败
}

/*----------  创建安防文件夹 -----------*/
void mkdir_path(char *p_cMkdir)
{
    int isCreate = mkdir(p_cMkdir,S_IRUSR | S_IWUSR | S_IXUSR | S_IRWXG | S_IRWXO);
    // 创建文件 指定权限 

    if( !isCreate )
        cout << "\n [ok] create AnfangDir:" << p_cMkdir  ;
    else
        cout << "\n [fall] create AnfangDir failed! error code: " << p_cMkdir  ;
}

/*----------  写入日志文件 -----------*/
int W_file()
{
    FILE * fp;
    fp = fopen (logname, "a+");                             // w+ 覆盖并写入 ; a+ 末尾追加字符串 
    fprintf(fp, "%s %d", eiscshuom,  2023);                 // 格式化输出流到 fp 指针文件
    fclose(fp);                                             // 关闭指针
    return(0);
}

/*----------  读取日志文件 -----------*/
int R_file ( char *lognamea)
{
    FILE *fp;
    char c;
    char buffer[9999];
    fp=fopen(lognamea,"r+");

    if(!fp)
    {
        cout << "[fail] 读取文件为空,或者没有读取到文件: ";
        cout << "\n 即将退出 R_file 整个函数, 退出效果来源: return -1 \n \n \n ";
        return -1;
    }
    else
    {
        cout << "\n [ok] fp 指针获取到文件 非 0 非空,值为: " << lognamea;
    }

    while(1)
    {
        c=fgetc(fp);                                        // fgetc 从指定流fp 获取下一个字符. 由于循环一次读一个字符。一直读取字符到变量 c 
        if( feof(fp) )                                      // feof  判断文件是否结束:测试给定流的文件结束符标识 。 文件读完,就 break 退出循环
        {
            break;
        }           
        cout << c;                                          // 读取到一个字符,打印一个字符
    }

    fseek(fp, 5, SEEK_SET);                                 // 查找 文件开头,指针初始化方向开头: 从 文件流 选择第几个字符位置
    fread(buffer, strlen(eiscshuom)+5, 1, fp);              // 从文件中读取字符串,读取一个元素,长度为 eiscshuom变量的长度
    cout << " \n [ok] 变量 c 获取到fp指针流赋值的字符: \n " << "\n  变量 buffer 从 fp 读取元素个数和数量 结果为: " << buffer << "\n \n " ;  
                                                            // strlen(c)+1 表示统计c 变量的长度还要加1  
    fclose(fp);

    return status;                                          // 终止函数,并且反回该函数的值为 0
}

/*------------ 判断 R_file 函数 -------------*/
int panduan_xuexi(){

    int status=0;
    if( !R_file(logname))
    {
        cout << "if 默认成立条件是 非0 非空,  感叹号 ! 是非运算 条件取反,相当于  结果为 是 0  是空 条件成立";
        cout << "\n [ok] 函数 R_file 返回的值为0 " ;
    }
    else
    {
        cout << "\n [fall] 函数 R_file 返回的值不为0 ";
    }

    return 0;
}

int main()
{
    log_run();
    strcat(DirServer, AnfangDir );
    strcpy(AnfangDir,DirServer);
    cout << "\n AnfangDir 的值为:" << AnfangDir;
    cout << "\n 我是main 函数 AnfangDir 接收到值:" << AnfangDir;

    mkdir_path(AnfangDir);
    W_file();
    panduan_xuexi();

    return 0;
}




//  rm -rf file ; echo "" > file.cpp ; nano file.cpp ; g++ file.cpp -o file ; chmod +x file; ./file


// 软件流程  : 创建安装目录 -> 创建 log.txt 文件 -> 写入eisc -> 开始抓包 -> 等待时间结束抓包 ->读取日志文件  -> 判断 ip 是否大于预设值

/*

#include <stdio.h>
#include <string.h>
 
int main()
{
   FILE *fp;
   char buffer[20];
   fp = fopen("eisc_anfang_log.txt", "r+");
 

//   fseek(fp, 0, SEEK_SET);
 
   fread(buffer, 3, 1, fp);
   printf("%s\n", buffer);
   fclose(fp);
   
   return(0);
}

// rm -rf cs ; echo "" > cs.c ; nano cs.c ; gcc cs.c -o cs ; ./cs
*/






有些梦虽然遥不可及,但并不是不可能实现。 
回复列表
默认   热门   正序   倒序

回复:c++ 文件读写

Powered by ddoss.cn 12.0

©2015 - 2024 ddoss

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息