c语言向指定文件写入程序,C语言同时向不同的文件写入不同的数据

C语言同时向不同的文件写入不同的数据

这个我写了好久才写出来的,之前不知道是什么原因总是不能同时一起写,而且写完一个程序就死了,后来在网上查到一篇文章 http://blog.csdn.net/feixiaoxing/article/details/7237649

通过修改变成以下代码。

#include #include

FILE * tp1; //指向存储吞吐量的指针

FILE * tp2; //指向存储吞吐量的指针

FILE * temp1; //存数数据临时文件

FILE * temp2; //存数数据临时文件

int i;

int test_time;//测试时间

struct punto{

float x;

float y;

} pto1, pto2;

void* tprocess1(void* args){

//打开临时文件并存储数据

temp1 = fopen("temp1.txt", "w+");

for(i = 0; i < test_time; i++){

pto1.x = i;

pto1.y = 0;

fwrite(&pto1, sizeof(pto1), 1, temp1);

}

//打开目标文件

if((tp1 = fopen("test1.dat","w+")) == NULL){

fprintf(stdout, "Error opening file test\n");

return 0;

}

//重定位临时文件指针

rewind(temp1);

fread(&pto1, sizeof(pto1), 1, temp1);//读取临时文件第一行数据存在pto1地址上

while(!feof(temp1)){

if (ferror(tp1)){

fprintf(stderr, "Error in file tp2\n");

break;

}

pto1.y = rand()%100;//给y赋值

fprintf(tp1, "%f %f\n", pto1.x, pto1.y);//将结构体的x y 写入到文件指针 tp1 上

fseek(temp1, -sizeof(pto1), SEEK_CUR);//将指针重定位到当前行的首部

fwrite(&pto1, sizeof(pto1), 1, temp1);//将数据写入到当前行

fprintf(stdout, "向test1.dat当前行写入:X = %f Y = %f\n", pto1.x, pto1.y);

fread(&pto1, sizeof(pto1), 1, temp1);//读取下一行

fprintf(stdout, "从temp1.txt读出下一行:X = %f Y = %f\n", pto1.x, pto1.y);

sleep(1);

}

fclose(tp1);

fclose(temp1);

remove("temp1.txt");

}

void* tprocess2(void* args){

//打开临时文件并存储数据

temp2 = fopen("temp2.txt", "w+");

for(i = 0; i < test_time; i++){

pto2.x = i;

pto2.y = 0;

fwrite(&pto2, sizeof(pto2), 1, temp2);

}

//打开目标文件

if((tp2 = fopen("test2.dat","w+")) == NULL){

fprintf(stdout, "Error opening file test\n");

return 0;

}

rewind(temp2);//重定位临时文件指针

fread(&pto2, sizeof(pto2), 1, temp2);//读取临时文件第一行数据存在pto2地址上

while(!feof(temp2)){

if (ferror(tp2)){

fprintf(stderr, "Error in file tp2\n");

break;

}

pto2.y = rand()%100;//给y赋值

fprintf(tp2, "%f %f\n", pto2.x, pto2.y);//将结构体的x y 写入到文件指针 tp 上

fseek(temp2, -sizeof(pto2), SEEK_CUR);//将指针重定位到当前行的首部

fwrite(&pto2, sizeof(pto2), 1, temp2);//将数据写入到当前行

fprintf(stdout, "向test2.dat当前行写入:X = %f Y = %f\n", pto2.x, pto2.y);

fread(&pto2, sizeof(pto2), 1, temp2);//读取下一行

fprintf(stdout, "从temp2.txt读出下一行:X = %f Y = %f\n", pto2.x, pto2.y);

sleep(1);

}

fclose(tp2);

fclose(temp2);

remove("temp2.txt");

}

int main(){

pthread_t t1;

pthread_t t2;

//输入测试时间

fprintf(stdout, "Please input test time (minutes):");

fscanf(stdin, "%d", &test_time);

getchar();

test_time = test_time * 60;

//alarm(test_time*2);

pthread_create(&t1,NULL,tprocess1,NULL);//创建线程并启动

pthread_create(&t2,NULL,tprocess2,NULL);//创建线程并启动

sleep(1);

pthread_join(t1,NULL);//等待线程结束,要等的线程就是第一个参数,程序会在这个地方停下来,直到线程结束,第二个参数用来接受线程函数的返回值

pthread_join(t2,NULL);

fprintf(stdout, "Test end...\n");

return 0;

}

输出结果: 向test1.dat当前行写入:X = 0.000000 Y = 83.000000 从temp1.txt读出下一行:X = 1.000000 Y = 0.000000 向test2.dat当前行写入:X = 0.000000 Y = 86.000000 从temp2.txt读出下一行:X = 1.000000 Y = 0.000000 向test2.dat当前行写入:X = 1.000000 Y = 77.000000 向test1.dat当前行写入:X = 1.000000 Y = 15.000000 从temp1.txt读出下一行:X = 2.000000 Y = 0.000000 从temp2.txt读出下一行:X = 2.000000 Y = 0.000000 向test2.dat当前行写入:X = 2.000000 Y = 35.000000 向test1.dat当前行写入:X = 2.000000 Y = 93.000000 从temp2.txt读出下一行:X = 3.000000 Y = 0.000000 从temp1.txt读出下一行:X = 3.000000 Y = 0.000000 向test2.dat当前行写入:X = 3.000000 Y = 86.000000 从temp2.txt读出下一行:X = 4.000000 Y = 0.000000 向test1.dat当前行写入:X = 3.000000 Y = 92.000000 从temp1.txt读出下一行:X = 4.000000 Y = 0.000000 向test2.dat当前行写入:X = 4.000000 Y = 49.000000 从temp2.txt读出下一行:X = 5.000000 Y = 0.000000 向test1.dat当前行写入:X = 4.000000 Y = 21.000000 从temp1.txt读出下一行:X = 5.000000 Y = 0.000000 向test2.dat当前行写入:X = 5.000000 Y = 62.000000 从temp2.txt读出下一行:X = 6.000000 Y = 0.000000 向test1.dat当前行写入:X = 5.000000 Y = 27.000000 从temp1.txt读出下一行:X = 6.000000 Y = 0.000000 向test2.dat当前行写入:X = 6.000000 Y = 90.000000 从temp2.txt读出下一行:X = 7.000000 Y = 0.000000 向test1.dat当前行写入:X = 6.000000 Y = 59.000000 从temp1.txt读出下一行:X = 7.000000 Y = 0.000000 向test2.dat当前行写入:X = 7.000000 Y = 63.000000 从temp2.txt读出下一行:X = 8.000000 Y = 0.000000 向test1.dat当前行写入:X = 7.000000 Y = 26.000000 从temp1.txt读出下一行:X = 8.000000 Y = 0.000000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Effective Java~44. 坚持使用标准的函数接口

在 java.util.Function 中有 43 个接口。不能指望全部记住它们&#xff0c;但是如果记住了六个基本接口&#xff0c;就可以在需要它们时派生出其余的接口。基本接口操作于对象引用类型。 Operator 接口表示方法的结果和参数类型相同。 Predicate 接口表示其方法接受一个参数并…

SQL Server 执行 字符串

EXEC (字符串或变量) 例&#xff1a; EXEC (SELECT * FROM Orders) 或 DECLARE sql nvarchar(50)SET sqlSELECT * FROM OrdersEXEC (sql)转载于:https://www.cnblogs.com/duwx/archive/2009/11/19/1606152.html

Python爬取大量数据时防止被封IP

From&#xff1a;http://blog.51cto.com/7200087/2070320 基于scrapy框架的爬虫代理IP设置&#xff1a;https://www.jianshu.com/p/074c36a7948c Scrapy: 针对特定响应状态码&#xff0c;使用代理重新请求&#xff1a;http://www.cnblogs.com/my8100/p/scrapy_middleware_aut…

c语言错误c4430,声明*C某类::Getdocument();(已声明,不兼容)

创建了一个CRightWindow类&#xff0c;基类为CScrollView&#xff0c;在.h文件中如下&#xff1a;public:CMy2015Doc* GetDocument(); // error C2143: 语法错误 : 缺少“;”(在“*”的前面)// error C4430: 缺少类型说明符 – 假定为 int。注意: C 不支持默认 int在…

CollapsiblePanel控件

CollapsiblePanel 控件属性将被初始化如下面的示例代码所示&#xff0c;斜体属性为可选属性。 <ajaxToolkit:CollapsiblePanelExtender ID"cpe" runat"Server"TargetControlID"Panel1"CollapsedSize"0"ExpandedSize"300"…

Effective Java~45. 谨慎使用Stream

在 Java 8 中添加了 Stream API&#xff0c;以简化顺序或并行执行批量操作的任务。 该 API 提供了两个关键的抽象&#xff1a;流(Stream)&#xff0c;表示有限或无限的数据元素序列&#xff0c;以及流管道 (stream pipeline)&#xff0c;表示对这些元素的多级计算。 Stream 中的…

shell 中 $(( )) 与 $( ) 还有 ${ } 的区别

From&#xff1a;http://blog.chinaunix.net/uid-14351756-id-2820651.html $( ) 与 (反引号) 在 bash shell 中&#xff0c;$( ) 与 (反引号) 都是用来做命令替换用(command substitution)的。 所谓的命令替换与我们第五章学过的变量替换差不多&#xff0c;都是用来重组命…

最近发包给朋友,搞定软件小活儿、解决小功能模块的感受

有时候也想&#xff0c;所有的事情都靠自己解决&#xff0c;太辛苦了太累了&#xff0c;在不差钱的这个年代&#xff0c;有些能让别人做的事情&#xff0c;就让别人做吧&#xff0c;但是一直找不到合适的人&#xff0c;什么叫合适的人&#xff1f;我简单的说几下&#xff0c;不…

c语言数列偶数在奇数前面,奇数

奇偶校验2021-05-19 15:03:06奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验&#xff0c;反之&#xff0c;称为偶校验。奇偶校验需要一位校验位&#xff0c;即使用串口通…

利用自定义web-font实现数据防采集

From&#xff1a;https://blog.csdn.net/fdipzone/article/details/68166388 完整源码&#xff1a;https://download.csdn.net/download/fdipzone/9798142 web-font介绍 web-font 是 CSS3 中的一种标记 font-face&#xff0c;在 font-face 声明里&#xff0c;你可以声明一种字…

数字证书~证书链

来源&#xff1a;客户端认证https服务端证书过程详解——证书链_huzhenv5的博客-CSDN博客_证书链认证过程 基本概念 证书 首先&#xff0c;我们看看在wikipedia上对证书的定义&#xff0c;In cryptography, a public key certificate (also known as a digital certificate o…

修改Netbeas的注释结构

Eclipse修改注释的方法&#xff1a;  窗口-》首选项-》java-》代码样式-》代码模板-》注释-》方法-》确定&#xff0c;下面就可以修改了  Netbeans修改注释的方法&#xff1a;  工具->模板 打开 看见那一排列表没有 展开Java 选择Java类 点击 在编辑器中打开 …

c语言assign用法,object-c语言的nonatomic,assign,copy,retain的区别

nonatomic&#xff1a;非原子性访问&#xff0c;不加同步&#xff0c;多线程并发访问会提高性能。如果不加此属性&#xff0c;则默认是两个访问方法都为原子型事务访问。(atomic是Objc使用的一种线程保护技术&#xff0c;基本上来讲&#xff0c;是防止在写未完成的时候被另外一…

反反爬技术,破解猫眼网加密数字

From&#xff1a;https://blog.csdn.net/qq_31032181/article/details/79153578 From&#xff1a;http://www.freebuf.com/news/140965.html 利用自定义web-font实现数据防采集&#xff1a;http://blog.csdn.net/fdipzone/article/details/68166388 利用前端字体文件(.ttf)混…

数字签名,数字证书,证书链原理

来源&#xff1a;数字签名&#xff0c;数字证书&#xff0c;证书链原理&#xff08;图文详解&#xff09;_Ruby丶彬的博客-CSDN博客_证书链验证原理 数字签名&#xff0c;数字证书&#xff0c;加密简述 数字签名&#xff1a;谈及数字签名&#xff0c;就如小时候老师叫把卷子或…

成都信息工程c语言题库,成都信息工程学院C语言考试题及答案

}in 0;while (sum < im) { }sum - in; in--;printf(\sum%d\\n\in , sum); return 0;in; sum in;编写一程序P215.C实现以下功能求S1/1&#xff01;1/2&#xff01;1/3&#xff01;…1/N&#xff01;并输出结果(显示时小数部分占16位&#xff0c;计算时要求从第1项开始往后累…

转--javascript 数组

较为上篇更为深刻 原文&#xff1a;http://blog.csdn.net/jaylongli/archive/2009/03/20/4007823.aspx 数组有四种定义的方式 使用构造函数&#xff1a; vara newArray(); varb newArray(8); varc newArray("first", "second", "third"); 或者数…

猫眼 — 破解数字反爬获取实时票房

From&#xff1a;https://zhuanlan.zhihu.com/p/33112359 js分析 猫_眼_电_影 字体文件 font-face&#xff1a;https://www.cnblogs.com/my8100/p/js_maoyandianying.html 解析某电影和某招聘网站的web-font自定义字体&#xff1a;https://www.jianshu.com/p/5400bbc8b634 Fo…

c语言中单精度的有效位数是,C语言中的单精度双精度数的有效位数

#include "stdio.h"#include "conio.h"void main(){printf("%.20f\n",0.1234567890123456789f);getch();}观察在VC6&#xff0c;WinTC中的运行结果&#xff0c;可能是0.1234567891043281560000.12345678901234567700而一般在C语言教材上说&#…

Yoshua Bengio团队通过在网络「隐藏空间」中使用降噪器以提高深度神经网络的「鲁棒性」

原文来源&#xff1a;arXiv 作者&#xff1a;Alex Lamb、Jonathan Binas、Anirudh Goyal、Dmitriy Serdyuk、Sandeep Subramanian、Ioannis Mitliagkas、Yoshua Bengio「雷克世界」编译&#xff1a;嗯~是阿童木呀、KABUDA、EVA导语&#xff1a;深度神经网络在各种各样的重要任…