幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2428|回复: 6

[通用编程] 关于文件

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-10-22 22:53:51 | 显示全部楼层 |阅读模式
#include<stdio.h>
void main()
{
    FILE *fp;
    char ch;
    if((fp=fopen("file1.txt","r"))==NULL)
    {
        printf("cannot open this file.\n");
        exit(1);
    }
    while((ch=fgetc(fp))!=EOF)
        putchar(ch);
    fclose(fp);
}
这个读敢文件的程序,为什么我把file1.txt里面的内容全部删掉,但在TC上运行时,没有打印为空时的那段话呢?但在VC++上能打印出来[s:3]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-10-23 09:15:17 | 显示全部楼层
不清楚VC这个东西是怎么处理的。我手上只有dmc编译器,表现和tc一样。
我想大小为0kb的空文件,不代表他的文件指针也是空的。
if((fp=fopen("file1.txt","r"))==NULL)这句只是判断这个文件存在与否,并没有判断这个文件的大小是不是为空。
え~え~お!!!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2007-10-23 19:30:05 | 显示全部楼层
LZ这次代码好看多了,先赞一下...不过,还是推荐用[ code ] [ / code ]把代码括起来,看起来更方便...

但是,VC++真能打印出那句话么...
把LZ的代码直接复制到一个叫z.c的文件里.在命令行使用cl z.c进行编译,然后执行程序.我就看到了下面的内容:
C:\\>cl z.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.20706.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

z.c
Microsoft (R) Incremental Linker Version 9.00.20706.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:z.exe
z.obj

C:\\>z

C:\\>

顺带,当前运行目录下保证有下列文件:
C:\\>dir *.txt *.c *.obj *.exe
驱动器 C 中的卷没有标签。
卷的序列号是 D4D4-C6D5

C:\\ 的目录

2007-10-23  19:26                 0 file1.txt

C:\\ 的目录

2007-10-15  20:27             1,420 test.c
2007-10-23  19:26               256 z.c
2007-10-19  20:47             1,584 zz.c

C:\\ 的目录

2007-10-20  18:44             3,049 fib.obj
2007-10-23  19:26               926 z.obj
2007-10-19  20:41             1,358 zz.obj

C:\\ 的目录

2007-10-20  18:44            48,640 fib.exe
2007-10-23  19:26            58,368 z.exe
2007-10-19  20:41            48,640 zz.exe

LS说的完全没错.所以不用重复了...||
我只是怀疑VC++是否能重复LZ说的行为,并且验证了一次而已
回复 支持 反对

使用道具 举报

50

主题

742

帖子

402

积分

版主

自定义头衔

Rank: 7Rank: 7Rank: 7

积分
402
发表于 2007-10-23 21:58:57 | 显示全部楼层
我想LZ在VC试验的时候肯定忘记放那个文件了
Style-C
回复 支持 反对

使用道具 举报

50

主题

994

帖子

6699

积分

管理员

爱干啥干啥!

Rank: 9Rank: 9Rank: 9

积分
6699
发表于 2007-10-26 02:16:12 | 显示全部楼层
也许是工作目录没有设置正确。使用默认的工程设置,在IDE中启动程序,工作目录是设置在project目录的,但程序实际存在于$config目录,比如Debug或者Release什么的。

文件没有摆对地方就会出现诡异的事情。

“放下屠刀,立地成佛” 故应先杀生,然后再成佛。

(\\_/) (-_-) ()+() this is bunny priest.
回复 支持 反对

使用道具 举报

1

主题

7

帖子

79

积分

②入门

积分
79
发表于 2007-10-26 14:36:41 | 显示全部楼层
在tc里要加上getch();
  1.     if((fp=fopen("file1.txt","r"))==NULL)
  2.     {
  3.         printf("cannot open this file.\\n");
  4.         getch();
  5.         exit(1);
  6.     }
复制代码
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2007-10-26 14:52:26 | 显示全部楼层
getch()只是为了在显示了标准输出之后,程序退出前阻塞程序而已吧。如果本来就是在命令行上的话,加不加都无关紧要。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-2 09:53 , Processed in 0.019439 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表