Bootstrap

【LINUX文件IO编程】文件操作中“w+”和“r+”写操作时的问题

        以w+打开文件后,进行写操作,首先会把整个文件的数据清空,然后再写入数据。而r+打开文件后,进行写操作则是直接写入数据,比如你要写入10个字节的数据,他就会把这是个字节的内容覆盖成你这次写入的数据,十个字节之后的数据就保持不变。

w+

这是最初的文本数据:

int main() 
{
	FILE* fd = fopen("text.txt", "w+");
	if (fd == NULL)
	{
		printf("open failed!");
		fclose(fd);
		return 0;
	}
	char buff[20] = "i like eat apple";
	fputs(buff, fd);

	fclose(fd);
	return 1;
}

这是运行代码后的结果:

r+

最初文本数据:

int main() 
{
	FILE* fd = fopen("text.txt", "r+");
	if (fd == NULL)
	{
		printf("open failed!");
		fclose(fd);
		return 0;
	}
	char buff[20] = "i like eat apple";
	fputs(buff, fd);

	fclose(fd);
	return 1;
}

这是运行代码后的结果:

总结 

从上面的两个例子能看出,用w参数是先清空文本在写入数据,r参数则是直接写入数据不管其他的。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;