C/C++在文件指定位置插入字符串或者空行
来源:互联网 发布:为什么代购比淘宝贵 编辑:程序博客网 时间:2024/06/11 05:18
// test725.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <stdio.h>
int fun1()
{
//添加Req和Ans
FILE *file = fopen("E:/test.aut","r+");
if (!file)
{
return -1;
}
char *strTollId = "83";
char *strVehicleId = "82";
int iToolIdIndex = 0;
int iVehicleIdIndex = 1;
int iCount = 0;
int iCountBeforeRead = 0;
while(!feof(file))
{
char buf[500] = {0};
fgets(buf,sizeof(buf) - 1,file);
//buf[strlen(buf) - 1] = '\n';//去掉\n
//buf[strlen(buf)] = '\n';//去掉\n
if (0 == strlen(buf))
{
fclose(file);
return -1;
}
else if (1 == strlen(buf))
{
iCount += 2;
continue;
}
else if (2 < strlen(buf))
{
iCount += strlen(buf) + 1;
}
char strFoundId[3] = {0};
memcpy(strFoundId,buf + iVehicleIdIndex*3,2);
if (!strcmp(strFoundId,strVehicleId))
{
char strReq[504] = {0};
strcpy(strReq,"Req:");
//先把插入位置后面的所有字符读取到临时文件中
FILE *tempFile = tmpfile();
if (!tempFile)
{
return -1;
}
while (!feof(file))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,file);
if(!feof(file))
{
// bufTemp[strlen(bufTemp) - 1] = '\r';//去掉\n
// bufTemp[strlen(bufTemp)] = '\n';
}
else
{
//最后一个字节读出来的是F F,下面的处理是去掉中间空格
// bufTemp[strlen(bufTemp) - 2] = bufTemp[strlen(bufTemp) - 1];
// bufTemp[strlen(bufTemp) - 1] = 0;
}
fwrite(bufTemp,1,strlen(bufTemp),tempFile);
}
fseek(file,iCount - (strlen(buf) + 1),SEEK_SET);
strcat(strReq,buf);
//strcat(strReq,"\\r\\n");
fwrite(strReq,1,strlen(strReq),file);
fflush(file);
iCount += 4;
fseek(tempFile,0,SEEK_SET);
while (!feof(tempFile))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,tempFile);
if(!feof(tempFile))
{
// bufTemp[strlen(bufTemp) - 1] = '\r';//去掉\n
// bufTemp[strlen(bufTemp)] = '\n';
}
else
{
//最后一个字节读出来的是F F,下面的处理是去掉中间空格
// bufTemp[strlen(bufTemp) - 2] = bufTemp[strlen(bufTemp) - 1];
// bufTemp[strlen(bufTemp) - 1] = 0;
}
fwrite(bufTemp,1,strlen(bufTemp),file);
}
fclose(tempFile);
fflush(file);
fseek(file,iCount,SEEK_SET);
}
else if (!strcmp(strFoundId,strTollId))
{
char strAns[504] = {0};
strcpy(strAns,"Ans:");
//先把插入位置后面的所有字符读取到临时文件中
FILE *tempFile = tmpfile();
if (!tempFile)
{
return -1;
}
while (!feof(file))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,file);
if(!feof(file))
{
// bufTemp[strlen(bufTemp) - 1] = '\r';//去掉\n
// bufTemp[strlen(bufTemp)] = '\n';
}
else
{
//最后一个字节读出来的是F F,下面的处理是去掉中间空格
// bufTemp[strlen(bufTemp) - 2] = bufTemp[strlen(bufTemp) - 1];
// bufTemp[strlen(bufTemp) - 1] = 0;
}
fwrite(bufTemp,1,strlen(bufTemp),tempFile);
}
fseek(file,iCount - (strlen(buf) + 1),SEEK_SET);
strcat(strAns,buf);
//strcat(strReq,"\\r\\n");
fwrite(strAns,1,strlen(strAns),file);
fflush(file);
iCount += 4;
fseek(tempFile,0,SEEK_SET);
while (!feof(tempFile))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,tempFile);
if(!feof(tempFile))
{
// bufTemp[strlen(bufTemp) - 1] = '\r';//去掉\n
// bufTemp[strlen(bufTemp)] = '\n';
}
else
{
//最后一个字节读出来的是F F,下面的处理是去掉中间空格
// bufTemp[strlen(bufTemp) - 2] = bufTemp[strlen(bufTemp) - 1];
// bufTemp[strlen(bufTemp) - 1] = 0;
}
fwrite(bufTemp,1,strlen(bufTemp),file);
}
fclose(tempFile);
fseek(file,iCount,SEEK_SET);
}
}
fclose(file);
return 0;
}
int fun2()
{
//添加Req和Ans
FILE *file = fopen("E:/test.aut","r+");
if (!file)
{
return -1;
}
int iCount = 0;
bool iIsFirstReq = true;
while(!feof(file))
{
char buf[500] = {0};
fgets(buf,sizeof(buf) - 1,file);
if (0 == strlen(buf))
{
fclose(file);
return -1;
}
else if (1 == strlen(buf))
{
iCount += 2;
continue;
}
else if (2 < strlen(buf))
{
iCount += strlen(buf) + 1;
}
char strReq[5] = {0};
memcpy(strReq,buf,4);
if (!strcmp(strReq,"Req:"))
{
if (iIsFirstReq)
{
iIsFirstReq = false;
continue;
}
//先把插入位置后面的所有字符读取到临时文件中
FILE *tempFile = tmpfile();
if (!tempFile)
{
return -1;
}
fwrite(buf,1,strlen(buf),tempFile);
while (!feof(file))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,file);
fwrite(bufTemp,1,strlen(bufTemp),tempFile);
}
fseek(file,iCount - (strlen(buf) + 1),SEEK_SET);
//strcat(strReq,buf);
//strcat(strReq,"\\r\\n");
fwrite("\n",1,1,file);
fflush(file);
iCount += 2;
fseek(tempFile,0,SEEK_SET);
while (!feof(tempFile))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,tempFile);
fwrite(bufTemp,1,strlen(bufTemp),file);
}
fclose(tempFile);
fseek(file,iCount,SEEK_SET);
}
}
fclose(file);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
87 83 82 54 FF FF
81 82 83 54 55 FF
85 83 82 79 FF FF
*/
//
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <stdio.h>
int fun1()
{
//添加Req和Ans
FILE *file = fopen("E:/test.aut","r+");
if (!file)
{
return -1;
}
char *strTollId = "83";
char *strVehicleId = "82";
int iToolIdIndex = 0;
int iVehicleIdIndex = 1;
int iCount = 0;
int iCountBeforeRead = 0;
while(!feof(file))
{
char buf[500] = {0};
fgets(buf,sizeof(buf) - 1,file);
//buf[strlen(buf) - 1] = '\n';//去掉\n
//buf[strlen(buf)] = '\n';//去掉\n
if (0 == strlen(buf))
{
fclose(file);
return -1;
}
else if (1 == strlen(buf))
{
iCount += 2;
continue;
}
else if (2 < strlen(buf))
{
iCount += strlen(buf) + 1;
}
char strFoundId[3] = {0};
memcpy(strFoundId,buf + iVehicleIdIndex*3,2);
if (!strcmp(strFoundId,strVehicleId))
{
char strReq[504] = {0};
strcpy(strReq,"Req:");
//先把插入位置后面的所有字符读取到临时文件中
FILE *tempFile = tmpfile();
if (!tempFile)
{
return -1;
}
while (!feof(file))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,file);
if(!feof(file))
{
// bufTemp[strlen(bufTemp) - 1] = '\r';//去掉\n
// bufTemp[strlen(bufTemp)] = '\n';
}
else
{
//最后一个字节读出来的是F F,下面的处理是去掉中间空格
// bufTemp[strlen(bufTemp) - 2] = bufTemp[strlen(bufTemp) - 1];
// bufTemp[strlen(bufTemp) - 1] = 0;
}
fwrite(bufTemp,1,strlen(bufTemp),tempFile);
}
fseek(file,iCount - (strlen(buf) + 1),SEEK_SET);
strcat(strReq,buf);
//strcat(strReq,"\\r\\n");
fwrite(strReq,1,strlen(strReq),file);
fflush(file);
iCount += 4;
fseek(tempFile,0,SEEK_SET);
while (!feof(tempFile))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,tempFile);
if(!feof(tempFile))
{
// bufTemp[strlen(bufTemp) - 1] = '\r';//去掉\n
// bufTemp[strlen(bufTemp)] = '\n';
}
else
{
//最后一个字节读出来的是F F,下面的处理是去掉中间空格
// bufTemp[strlen(bufTemp) - 2] = bufTemp[strlen(bufTemp) - 1];
// bufTemp[strlen(bufTemp) - 1] = 0;
}
fwrite(bufTemp,1,strlen(bufTemp),file);
}
fclose(tempFile);
fflush(file);
fseek(file,iCount,SEEK_SET);
}
else if (!strcmp(strFoundId,strTollId))
{
char strAns[504] = {0};
strcpy(strAns,"Ans:");
//先把插入位置后面的所有字符读取到临时文件中
FILE *tempFile = tmpfile();
if (!tempFile)
{
return -1;
}
while (!feof(file))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,file);
if(!feof(file))
{
// bufTemp[strlen(bufTemp) - 1] = '\r';//去掉\n
// bufTemp[strlen(bufTemp)] = '\n';
}
else
{
//最后一个字节读出来的是F F,下面的处理是去掉中间空格
// bufTemp[strlen(bufTemp) - 2] = bufTemp[strlen(bufTemp) - 1];
// bufTemp[strlen(bufTemp) - 1] = 0;
}
fwrite(bufTemp,1,strlen(bufTemp),tempFile);
}
fseek(file,iCount - (strlen(buf) + 1),SEEK_SET);
strcat(strAns,buf);
//strcat(strReq,"\\r\\n");
fwrite(strAns,1,strlen(strAns),file);
fflush(file);
iCount += 4;
fseek(tempFile,0,SEEK_SET);
while (!feof(tempFile))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,tempFile);
if(!feof(tempFile))
{
// bufTemp[strlen(bufTemp) - 1] = '\r';//去掉\n
// bufTemp[strlen(bufTemp)] = '\n';
}
else
{
//最后一个字节读出来的是F F,下面的处理是去掉中间空格
// bufTemp[strlen(bufTemp) - 2] = bufTemp[strlen(bufTemp) - 1];
// bufTemp[strlen(bufTemp) - 1] = 0;
}
fwrite(bufTemp,1,strlen(bufTemp),file);
}
fclose(tempFile);
fseek(file,iCount,SEEK_SET);
}
}
fclose(file);
return 0;
}
int fun2()
{
//添加Req和Ans
FILE *file = fopen("E:/test.aut","r+");
if (!file)
{
return -1;
}
int iCount = 0;
bool iIsFirstReq = true;
while(!feof(file))
{
char buf[500] = {0};
fgets(buf,sizeof(buf) - 1,file);
if (0 == strlen(buf))
{
fclose(file);
return -1;
}
else if (1 == strlen(buf))
{
iCount += 2;
continue;
}
else if (2 < strlen(buf))
{
iCount += strlen(buf) + 1;
}
char strReq[5] = {0};
memcpy(strReq,buf,4);
if (!strcmp(strReq,"Req:"))
{
if (iIsFirstReq)
{
iIsFirstReq = false;
continue;
}
//先把插入位置后面的所有字符读取到临时文件中
FILE *tempFile = tmpfile();
if (!tempFile)
{
return -1;
}
fwrite(buf,1,strlen(buf),tempFile);
while (!feof(file))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,file);
fwrite(bufTemp,1,strlen(bufTemp),tempFile);
}
fseek(file,iCount - (strlen(buf) + 1),SEEK_SET);
//strcat(strReq,buf);
//strcat(strReq,"\\r\\n");
fwrite("\n",1,1,file);
fflush(file);
iCount += 2;
fseek(tempFile,0,SEEK_SET);
while (!feof(tempFile))
{
char bufTemp[500] = {0};
fgets(bufTemp,sizeof(bufTemp) - 1,tempFile);
fwrite(bufTemp,1,strlen(bufTemp),file);
}
fclose(tempFile);
fseek(file,iCount,SEEK_SET);
}
}
fclose(file);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
//在文件指定位置插入字符串或者空行,下面2个函数是在每行前面加上Req或者Ans,并添加空行间隔
fun1();
fun2();return 0;
}
txt文件内容如下:
/*87 82 83 FF 54 FF
87 83 82 54 FF FF
87 82 83 48 FF FF
81 82 83 54 55 FF
85 83 82 79 FF FF
*/
0 0
- C/C++在文件指定位置插入字符串或者空行
- C实例----在字符串指定位置插入字符
- 在字符串指定位置插入字符串
- C:strstr 查找指定字符串在源字符串中的位置
- 在指定的位置后插入字符串
- 字符串指定位置插入
- java2Word在Word文档指定位置插入图片或者文字
- java2Word在Word文档指定位置插入图片或者文字
- C读写文件--逐行输出、删除指定的一行,指定位置插入
- 在字符串的任意位置插入另一指定字符串
- 【Java】在一个字符串指定位置插入字符串
- Linux C编程——在指定位置输入指定长度的字符串
- 指定位置插入新字符串
- 指定位置插入新字符串
- asp.net CKEditor 在指定位置插入字符串
- c语言:【顺序表】静态顺序表的在指定位置插入元素,以及查找指定元素
- C语言:【动态顺序表】动态顺序表的在指定位置插入元素Insert,以及指定元素Find
- 在指定位置插入字符
- 关于微博授权时so文件导入的正确姿势
- archpr 压缩文件暴力破解
- JavaWeb学习总结(二)——Tomcat服务器学习和使用(一)
- JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)
- Spark集群安装笔记
- C/C++在文件指定位置插入字符串或者空行
- The Long Article Which I Can Show You
- 物联网大数据量频繁对MongoDB查询问题
- 欢迎使用CSDN-markdown编辑器
- Java for Android
- TensorLayer (TuneLayer) 实现 DropConnect
- JDBC(二)Statement,PrepareStatement和ResultSet
- Oracle 10g字符集问题
- Latex文件分别用Texwork和Winedt打开时,产生中文乱码的解决方法