文件输出

mz126 2015-05-18 03:02:07
求大神知道 为什么10之前的数无法正常打出

/* 将 1 - 100 写入文件 然后倒序读出来 */

#include <stdio.h>
#include <stdlib.h>
int main( void )
{
FILE* pfile = NULL;
int val = 0;
long cnt = 0L;
int i = 0;

// open the file
pfile = fopen( "abc.txt" , "w" );
if( !pfile )
{
fprintf( stderr , "can not open the file \n" );
exit( 1 );
}

// write the file
for( val = 1 ; val <= 100 ; ++ val )
{
fwrite( &val , sizeof( int ) , 1 , pfile );
}

// close the file
fclose( pfile );

// open the file
pfile = fopen( "abc.txt" , "r" );

for( i = 1 ; i <= 100 ; ++ i )
{
fseek( pfile , - i * sizeof( int ) , SEEK_END );
fread( &val , sizeof( int ) , 1 , pfile );
printf( "%d " , val );
if( i % 10 == 0 ) printf( "\n" );
}

// close the file
fclose( pfile );

return 0;
}
...全文
186 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
youjun610789338 2015-05-18
  • 打赏
  • 举报
回复
我能说,我只是copy了你的代码然后在Linux下g++编译后运行,没有出现你描述的现象吗


另外,1楼我想问问,你确定Linux用gcc能编译通过吗,我用gcc编译报如下错误:
/tmp/ccGpl1qQ.o:(.eh_frame+0x12):对‘__gxx_personality_v0’未定义的引用
collect2: ld 返回 1
苏叔叔 2015-05-18
  • 打赏
  • 举报
回复

100 99 98 97 96 95 94 93 92 91 
90 89 88 87 86 85 84 83 82 81 
80 79 78 77 76 75 74 73 72 71 
70 69 68 67 66 65 64 63 62 61 
60 59 58 57 56 55 54 53 52 51 
50 49 48 47 46 45 44 43 42 41 
40 39 38 37 36 35 34 33 32 31 
30 29 28 27 26 25 24 23 22 21 
20 19 18 17 16 15 14 13 12 11 
10 9 8 7 6 5 4 3 2 1 
苏叔叔 2015-05-18
  • 打赏
  • 举报
回复
若使用fwrite和fread,请使用"~b"的模式打开文件 修改如下:

/*  将 1 - 100 写入文件 然后倒序读出来 */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	FILE* pfile = NULL;
	int val = 0;
	long cnt = 0L;
	int i = 0;

	// open the file
	//pfile = fopen("abc.txt", "w");
	pfile = fopen("1.txt", "wb");
	if (!pfile)
	{
		fprintf(stderr, "can not open the file \n");
		exit(1);
	}

	// write the file
	for (val = 1; val <= 100; ++val)
	{
		fwrite(&val, sizeof(int), 1, pfile);
	}

	// close the file
	fclose(pfile);

	// open the file
	pfile = fopen("1.txt", "rb");

	for (i = 1; i <= 100; ++i)
	{
		fseek(pfile, -i * sizeof(int), SEEK_END);
		fread(&val, sizeof(int), 1, pfile);
		printf("%d ", val);
		if (i % 10 == 0) printf("\n");
	}

	// close the file
	fclose(pfile);
	return 0;
}
赵4老师 2015-05-18
  • 打赏
  • 举报
回复
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息…… 推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
赵4老师 2015-05-18
  • 打赏
  • 举报
回复
不要把 fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fseek,ftell,fread,fwrite,fgetc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待 弄混了
赵4老师 2015-05-18
  • 打赏
  • 举报
回复
输出上卷到屏幕外面了吧。我猜。
kakashi0309 2015-05-18
  • 打赏
  • 举报
回复
正常啊 linux gcc 环境下面
随着文化消费升级与演出市场发展,剧场票务面临售卖效率低、防伪弱、会员价值挖掘不足等问题:固定售价无法反映供需变化,抢票并发导致超卖与重复下单,纸质票核销效率低且易伪造。本文设计并实现了剧场演出票务与会员运营管理系统。 系统采用Java 17与Spring Boot 3.x构建后端,Vue 3构建管理端,微信小程序作为购票入口,MySQL 8.0为主数据库,Redis承担座位锁、缓存与防重功能,并通过微信支付完成在线支付,实现演出发布、在线选座购票、电子票核销、会员积分、周边商城与数据统计的全流程数字化管理。系统采用前后端分离分层架构,划分为演出管理、选座购票、票务核销、会员运营、数据统计五大模块,支持多剧场多场次统一管理。 本文提出三项创新:一是动态票价与座位分区定价机制(DPM),根据上座率、距开演时间动态调整票价,实测热门场次平均票价提升约12%;二是选座并发防护与票务防重机制(SCP),通过座位级Redis分布式锁、条件更新与票码唯一约束三重防护,实测200并发选座零超卖、票码零重复;三是会员画像与演出精准推荐机制(MIR),基于购票历史、观演偏好与积分构建画像,结合协同过滤实现精准推荐,实测推荐点击率提升18%。 测试表明:200并发抢购热门场次座位零超卖、票码零重复,电子票核销平均38ms,防重拦截率100%,高峰并发下平均响应400ms以内。本文为剧场运营提供覆盖票务销售-核销-会员运营-数据决策全链路的一体化方案,为座位管理、票务安全与会员精细化运营提供可复用技术范式。 【课程报告内容】 摘要 第1章 绪论 第2章 相关技术与理论 第3章 系统需求分析 第4章 系统总体设计 第5章 系统详细设计与实现 第6章 系统测试与分析 第7章 总结与展望 参考文献 附件-实现指南

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧