| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2213 人关注过本帖
标题:这是一个测量文本长度的程序,但测量结果比实际上多了2个字节
只看楼主 加入收藏
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
结帖率:85.71%
收藏
已结贴  问题点数:7 回复次数:10 
这是一个测量文本长度的程序,但测量结果比实际上多了2个字节
#include <stdio.h>
int main()
{
    FILE*fp1,*fp2;
    long i;
    fp1=fopen("C:\\Users\\邹特强\\Desktop\\新建文件夹\\test.c\\text.exe","r");
    fseek(fp1,0L,2);
    i=ftell(fp1);
    fclose(fp1);
    printf("%ld",i);
    return 0;
}
原文件的内容是 abcdef,六个字母,没有按回车键,没有空格就6个字母,实际结是输出:8,
想请教下为什么?/
搜索更多相关主题的帖子: 新建文件夹 Desktop include return Users 
2017-03-12 13:25
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:2 
调试,没出现你说的情况。
2017-03-12 13:56
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10587
专家分:43128
注 册:2014-5-20
收藏
得分:2 
回复 楼主 邹特强
    fp1=fopen("C:\\Users\\邹特强\\Desktop\\新建文件夹\\test.c\\text.exe","r");
打开的是EXE文件,内容怎会是 abcdef 六个字母?
2017-03-12 15:08
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
以下是引用吹水佬在2017-3-12 15:08:57的发言:

    fp1=fopen("C:\\Users\\邹特强\\Desktop\\新建文件夹\\test.c\\text.exe","r");
打开的是EXE文件,内容怎会是 abcdef 六个字母?

他要把数据文件的后缀名改成exe也是可以的。不过真有点怀疑test.c是有效目录!

[此贴子已经被作者于2017-3-12 15:35编辑过]

2017-03-12 15:18
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
把文本文件发出来 或者自己找16进制编辑器查看一下 到底是几个字符

DO IT YOURSELF !
2017-03-12 22:40
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
收藏
得分:0 
回复 3楼 吹水佬
我设置了一个文件,在里面输入了abcdef六个字母,并以exe存储的

............
2017-03-13 23:02
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
收藏
得分:0 
回复 4楼 ehszt
其实test.c是我随便取的一个名字,.c并不代表是格式的,是有效目录

............
2017-03-13 23:03
邹特强
Rank: 2
等 级:论坛游民
帖 子:123
专家分:85
注 册:2016-9-21
收藏
得分:0 
回复 5楼 wp231957
好像不能发text文件,我把cpu数据给你看下,我看不懂
0401530 <+0>:    push   %rbp
   0x0000000000401531 <+1>:    mov    %rsp,%rbp
   0x0000000000401534 <+4>:    sub    $0x30,%rsp
   0x0000000000401538 <+8>:    callq  0x402130 <__main>
   0x000000000040153d <+13>:    lea    0x2abc(%rip),%rdx        # 0x404000
   0x0000000000401544 <+20>:    lea    0x2abd(%rip),%rcx        # 0x404008
   0x000000000040154b <+27>:    callq  0x402b48 <fopen>
   0x0000000000401550 <+32>:    mov    %rax,-0x8(%rbp)
   0x0000000000401554 <+36>:    mov    -0x8(%rbp),%rax
   0x0000000000401558 <+40>:    mov    $0x2,%r8d
   0x000000000040155e <+46>:    mov    $0x0,%edx
   0x0000000000401563 <+51>:    mov    %rax,%rcx
   0x0000000000401566 <+54>:    callq  0x402b50 <fseek>
   0x000000000040156b <+59>:    mov    -0x8(%rbp),%rax
   0x000000000040156f <+63>:    mov    %rax,%rcx
   0x0000000000401572 <+66>:    callq  0x402b58 <ftell>
   0x0000000000401577 <+71>:    mov    %eax,-0xc(%rbp)
   0x000000000040157a <+74>:    mov    -0x8(%rbp),%rax
   0x000000000040157e <+78>:    mov    %rax,%rcx
   0x0000000000401581 <+81>:    callq  0x402b60 <fclose>
   0x0000000000401586 <+86>:    mov    -0xc(%rbp),%eax
   0x0000000000401589 <+89>:    mov    %eax,%edx
   0x000000000040158b <+91>:    lea    0x2aa9(%rip),%rcx        # 0x40403b
   0x0000000000401592 <+98>:    callq  0x402b68 <printf>
   0x0000000000401597 <+103>:    mov    $0x0,%eax
=> 0x000000000040159c <+108>:    add    $0x30,%rsp
   0x00000000004015a0 <+112>:    pop    %rbp
   0x00000000004015a1 <+113>:    retq   
不知道有没有用

............
2017-03-13 23:10
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 8楼 邹特强
结合你六楼的,我越发的不懂了

DO IT YOURSELF !
2017-03-14 04:33
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10587
专家分:43128
注 册:2014-5-20
收藏
得分:0 
以下是引用邹特强在2017-3-13 23:02:47的发言:

我设置了一个文件,在里面输入了abcdef六个字母,并以exe存储的

最好说说生成这个文件的环境,这样好测试。
如:操作系统、生成文件的编辑器....。
2017-03-14 06:05
快速回复:这是一个测量文本长度的程序,但测量结果比实际上多了2个字节
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018276 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved