精华内容
下载资源
问答
  • 修改EXCEL文件摘要内容,在网上看到读取文件摘要信息,没有写入修改.这是利用EXCEL控件打开后修改.
  • C语言实现对文件内容进行修改

    万次阅读 多人点赞 2014-09-06 16:10:38
    项目中需要实现对文件内容进行修改,所以有了以下的测试程序,其中遇到了很多问题,这一一记录下来。 其实实现原理很简单,首先是要实现定位到所需要的字段的那一行,之后再对指定字段进行修改我接触了shell...

    项目中需要实现对文件内容进行修改,所以有了以下的测试程序,其中遇到了很多问题,在这一一记录下来。

    其实实现原理很简单,首先是要实现定位到所需要的字段的那一行,之后再对指定字段进行修改。在我接触了shell编程后,觉得shell编程会很容易实现(网上说可以用sed命令,还没接触过,有时间再弄弄)。但是由于C语言是面向过程的语言,需要顺序执行的特点,所以,实现中遇到了很多麻烦。


    首先,需要修改的文件—data文件的内容如下:

    00:00:00:00:00:00-192.168.1.1
    00:00:00:00:00:01-192.168.1.2
    00:00:00:00:00:02-192.168.1.3
    00:00:00:00:00:03-192.168.1.4

    ps:1.每行的内容为一组数据,-前面的内容为mac地址, -后面的内容为对应的ip地址。

     2.此处每行结束的时候不留多余空格(至于为什么这么处理,下面再做说明)


    我想实现的功能是:对我指定的mac地址对应的ip地址进行修改。

    比如,我想将00:00:00:00:00:01对应的ip地址修改成192.168.1.5


    其实现代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct localaddr
    {
    	char mac[18];
    	char ip[16];
    }LOCALADDR;
    
    int main()
    {
    	FILE *fp;
    	char line_buf[512], buf1[512], buf2[512];
    	int line_len, len;
    	LOCALADDR localaddr;
    
    	strcpy(localaddr.mac, "00:00:00:00:00:01");
    	strcpy(localaddr.ip,  "192.168.1.5");
    
    	if((fp = fopen("data", "r+")) == NULL)
    	{
    		perror("fopen");
    		exit(1);
    	}
    	
    	while(fgets(line_buf, 512, fp))
    	{
    		line_len = strlen(line_buf);
    		len += line_len;
    		sscanf(line_buf, "%[^-]-%[0-9,.]", buf1, buf2);    //将-之前的内容(mac地址)赋值给buf1,之后的内容(ip地址)给buf2
    		if(!strcmp(localaddr.mac, buf1))
    		{
    			len -= (strlen(line_buf) + 1);             //计算出那一行的行首位置
    			printf("len = %d\n", len);
    
    			if(fseek(fp, len, SEEK_SET) < 0)           //定位
    			{
    				perror("fseek");
    				exit(1);
    			}
    			strcpy(buf2, localaddr.ip);
    			strcat(buf1, "-");
    			strcat(buf1, buf2);
    			fprintf(fp, "%s", buf1);
    			fclose(fp);
    			return ;
    		}
    	}
    	exit(0);
    }
    

    编译执行后,data文件的内容变成:

    00:00:00:00:00:00-192.168.1.1
    00:00:00:00:00:01-192.168.1.5
    00:00:00:00:00:02-192.168.1.3
    00:00:00:00:00:03-192.168.1.4

    测试成功。


    Now,come the question:

    如果ip地址要求修改成192.168.1.123时,程序编译执行后,data文件内容却变成了:

    00:00:00:00:00:00-192.168.1.1
    00:00:00:00:00:01-192.168.1.1230:00:00:00:00:02-192.168.1.3
    00:00:00:00:00:03-192.168.1.4
    这是怎么了?


    分析:

    ip的主机地址字段由原来的“2”变成“5”的时候,长度没有发生变化,所以直接覆盖了原来的“2”,其他无变化。

    但是,当“2”变成“123”的时候,长度不一致,需要多占用2个字节,所以除了“123”中的“1”覆盖了原来的“2”之外,“123”中的“2”占用了换行符的空间,导致第三行的内容跑上了第二行,而“123”中的“3”把原来第三行的第一个“0”的空间占据了,所以出现了以上这种意外。

    解决方法:

    我的解决方法也很简单,就是确保data文件内每行的长度都>=34     即:17(mac地址长度)+15(ip地址最大长度)+1(一个“-”)+1(换行符)

    虽然不是通过修改代码来解决问题的,但这也是解决方法的一种,不是吗?

    展开全文
  • 最新进行文件方面的功能开发。遇到个这样的问题:(1)...1.修改/覆盖指定位置的文件内容 【ps】下文一直提到文件中间区域位置,就是指非文件开头和结尾的位置。为什么强调这个呢?因为开头和结尾就是很常规的就...

    最新在进行文件方面的功能开发。遇到个这样的问题:(1)文件读到中间,然后进行一些修改,(2)然后将文件从修改后的地方截断。本以为这是个简单的操作,却花费了好大的功夫(网上并没有这样的例子,一通尝试)。现在终于圆满解决了,特地记录一下,方便后来人。

    1.修改/覆盖指定位置的文件内容

    【ps】下文一直提到文件中间区域位置,就是指非文件开头和结尾的位置。为什么强调这个呢?因为开头和结尾就是很常规的就成功了,而非开头和结尾的位置则有注意点才能成功。

    开头提到的问题(1),即文件读到中间或者其他位置,对内容进行一些修改。所谓修改,即覆盖原文件那个位置的内容,文件大小并不发生变化。

    ofstream在打开文件时默认清空文件所有内容。如果使用ios::app来打开文件,虽然不会清空文件内容,但是每次写操作都追加到文件末尾,即使你seekp也没用。

    #include<fstream>
    using namespace std;
    
    int main()
    {
    	fstream fs("F:\\test.txt", ios::binary | ios::out | ios::app);
    	//跳转到开头的第二个字节位置进行写入,最后发现还是写在结尾,即使seekp也没用。
    	fs.seekp(2,ios::beg);
    	fs.write("!!!", 3);
    	fs.close();
    	return 0;
    }

    运行结果:开始text.text 内容是abcdefgh。现在变为abcdefgh!!!。无效,app模式是一定写在后面的,seekp也无效。

    解决办法是使用 fstream 并且再加个文件打开模式ios::app替换为ios::in,这样可以保证文件内容不会被清空,且文件指针偏移操作有效。

    下面是正确操作:

    #include<fstream>
    using namespace std;
    
    int main()
    {
    	fstream fs("F:\\test.txt", ios::binary | ios::out | ios::in);
    	//跳转到开头的第二个字节位置进行写入,正常写入
    	fs.seekp(2,ios::beg);
    	fs.write("!!!", 3);
    	fs.close();
    	return 0;
    }

    运行结果:开始text.text 内容是abcdefgh。现在变为ab!!!fgh。成功实现对文件的中间区域进行修改。

    【注意点】:中间的位置必须使用feekp然后再写才能成功修改。并且seekp之后,如果继续读一些内容,然后再写也写不进去。必须seekp之后就写,才写的进去。看下面例子就明白了。

    #include<fstream>
    using namespace std;
    
    int main()
    {
    	fstream fs("F:\\test.txt", ios::binary | ios::out | ios::in);
    	//文件指针正常到第二个字节,然后进行写入,发现写不进去。
    	char buf[2];
    	fs.read(buf, sizeof(buf));
    	fs.write("!!!", 3);
    	fs.close();
    	return 0;
    }

    运行结果:开始text.text 内容是abcdefgh。现在还是abcdefgh。写不进去啊。一开始就是这样操作的,一脸懵。就像上面说的,在fs.read的下一行加个feekp,然后再写就好了。看到这里你应该明白上面的注意点是什么意思了。

    2.从某个位置开始截断文件

    以前的c++标准库里面是不提供这个功能的,只能依赖操作系统的api。随着c++17标准库中加入了filesystem,其中有个resize_file函数,便十分方便的截断文件

    定义于头文件 <filesystem>
    void resize_file(const std::filesystem::path& p,
                     std::uintmax_t new_size);
    void resize_file(const std::filesystem::path& p,
                     std::uintmax_t new_size,
                     std::error_code& ec) noexcept;
    
    更改 p 所指名的的常规文件大小。
    若先前的文件大小大于 new_size ,则文件的剩余部分被舍弃。
    若先前的文件大小小于 new_size ,则增加文件大小,而且新区域如同以零填充。

     

    从某个位置截断文件,即只要这么大的文件,然后用这个size进行 resize_file截断就好了。下面是正确的演示

    #include<fstream>
    #include<filesystem>
    using namespace std;
    
    int main()
    {
    	//5字节处进行截断,即只有5字节大小
    	filesystem::resize_file("F:\\test.txt", 5);
    	return 0;
    }

    运行结果:开始text.text 内容是abcdefgh。现在是abcd。正确的从第五个字节进行截断。

    【ps】如果不支持c++17,则使用系统api。

    //linux系统
    #include <unistd.h>
     int ftruncate(int fildes, off_t length);
     int truncate(const char *path, off_t length); 
    
    //windows系统
    int _chsize( int fd,long size );

     

    展开全文
  • ant修改文件中的内容

    千次阅读 2013-04-22 00:19:17
    ant可以帮我们做很多事情,当然也包括,为我们修改文件中的指定字符串。 主要有以下两个方法: 一、replace命令 例子: 作用: 可以将test2.html中的字符串a,替换成test 二、replaceregexp命令 上面的...
    ant可以帮我们做很多事情,当然也包括,为我们修改文件中的指定字符串。
    主要有以下两个方法:
    一、replace命令
    例子:
    <replace file ="test2.html" token="a" value="test">
    作用:
    可以将test2.html中的字符串a,替换成test

    二、replaceregexp命令
    上面的replace命令用起来很简单,但没有办法做正则匹配,如果要替换的字符串,是需要用正则来描述的,可以用replaceregexp
    例子:
    <replaceregexp byline="true">
    <regexp pattern="[1-9][0-9]{4,}"/>
    <substitution expression="6356351"/>
    <fileset file="test.html"/>
    </replaceregexp>
    作用:
    将test.html中的QQ号码替换成6356351这串数字
    参数说明:
    byline="true" 表示替换所有满足条件的字符串,若设为false,则只会替换 第一个满足正则表达式的字符串
    pattern="[1-9][0-9]{4,}"表示QQ号码的正则表达式,当然,你也可以根据需求,替换成其他正则表达式
    expression="6356351" 表示将满足条件字符串替换成6356351
    <fileset file="test.html"/> 表示在test.html这个文件中进行查找和替换,你也可以设置为查找多个文件,具体方法请在网上搜索fileset 的相关配置
    展开全文
  • 今天遇到了一个问题,本来希望修改hosts中的内容,但保存时被告知无权限,网上搜索有很多方法都无效,最后搜到一个简单的方法:将hosts文件复制到桌面修改,然后覆盖原来位置的hosts文件即可!

            今天遇到了一个问题,本来希望修改hosts中的内容,但保存时被告知无权限,网上搜索有很多方法都无效,最后搜到一个简单的方法:将hosts文件复制到桌面上,修改,然后覆盖原来位置的hosts文件即可!

    展开全文
  • 我想删除文件中的某一行。...网上介绍的办法大概是再建一个文件,把原文件不需删除的内容拷贝过去。 用fgets和fputs。 但fgets是一个一个字符读的… fscanf可以跳行读,该用什么函数录入呢?fprintf没用。。
  • java修改properties文件 丢失内容

    千次阅读 2017-01-14 21:26:07
    基于java.util.Properties类写了一个修改属性文件的方法。测试的时候发现,该方法可以修改文件指定key的value,但是除了修改的key和value外,其他的内容全部被清除了
  • 今天将DHCP变为手动配置时,修改了/etc/network/interfaces这个文件,但是文件内容有错误,重启机器,无法进入系统。令我甚是难受,因为机子上面装了好多东西,我这台机器是分布式集群中的主节点,好多从节点都要...
  • txt文件在电脑上更改后(大量增添或删除),在手机上打开会变成乱码的原因可能是txt文件保存的格式不正确,可以另存为的时候更改转码格式,一般转为Unicode会正确。 ...
  • 3.修改文件内容,右键-编辑 即可打开 (使用记事本打开)。 4.将txt 修改为你想要的后缀名称。 5.修改后保存 6.保存后双击此文件。 7.可以看到你文件夹下所有的文件后缀都改变为你想要的后缀了。 8.test.bat 也...
  • 如何修改pdf文件的标题及内容

    千次阅读 2016-12-22 15:52:24
    很多刚刚接触PDF文件的朋友,对于修改pdf文件的这个问题总是不知道该如何操作,其实大家应该知道,想要修改PDF文件如果没有专业的辅助软件是不可能成功的,所以说小编现在为大家介绍现在常用的pdf修改方法。...
  • Android手机修改hosts文件

    千次阅读 2014-07-14 14:57:37
    Android手机修改hosts文件
  • 做微信摇一摇功能时,测试环境需要修改Host文件,安卓手机修改Host文件的常规方法整理如下:
  • PDF文件怎样只删除部分内容

    千次阅读 2020-07-07 15:10:26
    首先对于PDF的修改需要用到PDF编辑器,比如我们先用极速PDF编辑器打开这个PDF文件后,根据需要删除的内容形式可以有以下几种处理方式: 1、部分文字 如果需要删除的内容并不多,只是一页中或一段文字内容中的一小...
  • git查看某次提交/更新所涉及的文件,不是文件内容哈,网上很多说到用git show hash_id 怎么看文件内容,如果只是想简单的看看操作了哪些文件,可以这样: git log 打印出所有的提交记录 git log -3 --stat 这...
  • 默认情况下,手机使用者仅仅是个有普通权限的用户,对很多目录下的文件没有访问权限(类似windows的 “来宾”账号)。linux有个root账号,拥有对系统的全部管理权限(类似windows的Administrator/管理员账号)。 ...
  • 安卓手机上文件的后缀名怎么改?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!安卓手机上文件的后缀名怎么改?用手机修改、压缩软件或者电脑修改三...
  • 有的时候我们在网上下载了PDF格式的文件,但是因为一些原因我们有时候需要对文档进行修改,但是PDF又不像word文档那么容易进行编辑。下面博主就给大家详细介绍一下怎么修改PDF文件,让大家可以轻松的完成不用犯愁了...
  • C/C++如何修改数据文件指定内容

    千次阅读 2012-02-25 22:30:00
    以前一直以为C语言写文本的时候无法修改指定的内容,而且在网上也查过,但都有得到具体的说明。今天无聊,写C代码玩,用到随机文件的读写。想想随机文件已经固定每次写入的数据大小了,不会影响到其他的数据,所以...
  • 今天,notepad++抽风,突然崩溃,重启,保存的文件内容全部被删除了。是的,一份记录了几个月的文件大小就这样变成了 0KB 了。不怕,哥们几年前有过整个硬盘被格式化的经历,这点痛算神马?于是,保护第一现场,争取...
  • 更改手机或者电视的hosts文件

    千次阅读 2018-05-17 18:22:29
    获得root权限:adb root2、设置/system为可读写:adb remount3、将hosts文件复制到PC:adb pull /system/etc/hosts e:/hosts4、修改PC机上文件5、将PC机上文件复制到手机:adb push e:/hosts /system/etc/hostshost...
  • mac上更改文件关联

    千次阅读 2012-01-24 17:00:50
     以前windows系统下更改一个文件或者应用程序的默认打开程序关联很简单,而mac的osx系统下却一直没有发现如果更改一个文件的关联,特别是安装了影音播放软件MPlayer以后,这个软件不会自动修改系统同所有rmvb和...
  • 最近的项目需要修改 context.xml 文件,可是每次重启Tomcat,context 文件又还原了。从网上查了一些资料,但总感觉说的不是很清楚,此记录下我的环境和操作,希望对其他人有所帮助。 例如环境如下: Tomcat 安装...
  • 我们不论工作和学习中都越来越多的用到PDF格式的文件,这也是令我们一个尴尬的事情。因为我们上学的时候并没有对PDF格式的文件编辑进行过系统的学习。所以我们对于PDF编辑和修改并没有全面的了解。那难道我们...
  • solr修改schema文件(solr修改配置文件)

    千次阅读 2018-10-18 10:51:44
    不用从新搭建,不过里面的schema肯定是需要修改的,网上找了找,没有说的太详细的内容,自己费尽调好之后,觉得还是跟大家分享一下。 (本文不是solr的教程,solr的使用和schema文件的含义请自行学习) 1.查看管理...
  • eclipse中用的webview(webview对象.loadurl(地址))就调用了B/S的网站主页,我想实现用户安装apk时手机上同时生成对应的配置文件对配置文件进行修改后重启apk进去的是修改后的地址
  • notepad++ 文本文件内容丢失恢复

    万次阅读 多人点赞 2020-03-02 15:10:05
    今天用着notepad++不知道怎的,突然就崩溃了,...如下目录下有notepad++会自动保存的文件 C:\Users\Administrator\AppData\Roaming\Notepad++\backup 如果这个目录没有 那就是 C:\Users\你当前用户的用户名\A...
  • C语言读取一行TXT文件 && 修改TXT中的内容

    千次阅读 多人点赞 2020-12-22 17:16:55
    今天工作中遇到一些问题。 事情是这样的,给出一个TXT文本文件,里面存储的有多条数据,将数据插入数据库。 每条数据的格式: `BH001;属性1;属性2;属性3;属性4;属性5;` 但是给出的文档有问题,会有多出换行的数据...
  • nginx修改上传文件大小限制

    万次阅读 多人点赞 2018-03-29 09:28:16
    上传超过1M大的客户端文件无法正常上传,nginx直接报错,上传文件太大,于是修改了下nginx的配置,就可以了。 按照网上所说的加上client_max_body_size 字段,怎么重启nginx都不行。后来发现放的位置有问题! ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 724,796
精华内容 289,918
关键字:

怎样在手机上修改文件内容