我有一段程序为什么在windows下 和 linux下运行的结果不一样? 在windows下运行 结果是 edcba #include <stdio.h> #include <stdlib.h> int main( int argc , char* argv[] ) { FILE* pfile = NULL; // 文件指针 int cnt = 0; // 文件字符数 char ch = 0; // 读取的文件字符 int i = 0; // 循环变量 // 打开文件 pfile = fopen( "abc.txt" , "r" ); if( !pfile ) { fprintf( stderr , "cant not open the file !\n" ); } // 设置文件指针 fseek( pfile , 0L , SEEK_END ); // 获取文件中字节数 cnt = ftell( pfile ); printf( "%d\n" , cnt ); //倒序输出 for( i = 1 ; i <= cnt ; ++ i ) { fseek( pfile , -i , SEEK_END ); ch = fgetc( pfile ); printf( "%c" , ch ); } printf( "\n" ); // 关闭文件 fclose( pfile ); return 0; } |
|
40分 |
对于第一个结果 我不太懂windows的结果 因为 文件虽然有5个字符 但是还有一个文件结束符 所以最后应该是6个字符
文件结束符,根本就不会存在文件里。 对于第二个结果 我不懂linux的结果 就算要输出文件结束符 为什么会输出一个换行 |
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址;
人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息…… 推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。 不要把 |
|
把%c换成%x
|
|
就楼主这个问题来说,根本不存在这个转换! |
|
我在CSDN论坛发帖内容中如未注明Linux,都默认仅Windows。
|