接收一个文件内容,通过读取开始和结束标志,分别将其内容保存到不同的文件中

来源:互联网 发布:linux 虚拟主机配置 编辑:程序博客网 时间:2024/05/18 23:58

发送的文件内容如下图:其中连续的三个*号为开始标志,连续的三个#好为结束标志


现在将不同的三段内容保存在不同的文件中,部分代码如下:

int startFile = 0;//1->图片头  0->不是图片头int endFile = 0;//1->图片尾int fileFlag = 0;//区分文件名的标识FILE *fp;for (int j = 0; j <= 100; j++){//判断时候是图片头if ((recBuffer[j] == '*') && (recBuffer[j+1] == '*') && (recBuffer[j+2] == '*')){startFile = 1;j = j + 2;continue;//注意要用continue,因为下面的判断会导致每次会多写入一个‘*’}//判断时候是图片尾if ((recBuffer[j] == '#') && (recBuffer[j + 1] == '#') && (recBuffer[j + 2] == '#')){endFile = 1;j = j + 2;//continue;}if (startFile == 1){//创建文件并打开等操作memset(fileName, '\0', 40);//重置缓冲区//获取当前时间作为文件名time(&rawtime);//获取时间timeinfo = localtime(&rawtime);//转化为当地时间for (int i = 0, j = 0; i < (strlen(asctime(timeinfo) - 2)); i++){if ((asctime(timeinfo)[i] != ' ') && (asctime(timeinfo)[i] != ':') && (asctime(timeinfo)[i] != '\n'))fileName[j++] = asctime(timeinfo)[i];}fileFlag += 1;sprintf(fileName, "%s%d.txt", fileName, fileFlag);//以当前时间加一个数字.txt作为文件名printf("%s\n", fileName);fp = fopen(fileName, "wb");  //以二进制方式打开(创建)文件        startFile = 0;}if (endFile == 1){fclose(fp);endFile = 0;continue;}if (startFile == 0 && endFile == 0){fprintf(fp, "%c", recBuffer[j]);}}

最后得到的是如下三个文件:


存储的内容分别为:


0 0
原创粉丝点击