| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 581 人关注过本帖
标题:文件操作为什么错误
只看楼主 加入收藏
a9517495424
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:305
专家分:139
注 册:2011-7-20
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:12 
文件操作为什么错误
程序代码:
# include <stdio.h>
int main ()
{
    FILE *fp;
    char ch;
    if ((fp=fopen("d:\\jrzh\\example\\c1.txt","rt")) == NULL)
    {
        printf("\nCannot open file strike any key exit!");
        getch();  //D:\C编程测试\文件.cpp(9) : error C2065: 'getch' : undeclared identifier
        exit(1);  //D:\C编程测试\文件.cpp(10) : error C2065: 'exit' : undeclared identifier
    }
    ch = fgetc(fp);
    while (ch != EOF)
    {
        putchar(ch);
        ch = fgetc(fp);
    }
    fclose(fp);
   
    return 0;
}

                 帮我看看为什么错,错误信息在错误的语句后面。
                 程序需要读的文件,我的硬盘里是不存在的。




                                                                                      
                                                     
                          

[ 本帖最后由 a9517495424 于 2011-8-6 12:07 编辑 ]
2011-08-06 12:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
编译信息很清楚地告诉你,那两个函数它不认识!你写这两个函数的时候,想过它从哪里来吗?又不是自己写的,一定有出处。既然写了#include <stdio.h>它都不认识,那么肯定在别的.h文件中声明。

查资料是基本!

授人以渔,不授人以鱼。
2011-08-06 12:08
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
除了让程序通过,学编程的另一个必备功夫,是让对的程序错。
把你的程序,删掉#include <stdio.h>看看,新增什么错误信息?这些错误信息跟现在给出的是不是一样?为什么先前没有,现在又有了?是哪一个语句有的?
所谓“多想”,是这样想;所谓“多做”,是这样做。不要满足于抄或写一个程序,得到书上的答案,就算会了。
很多人喜欢问问题,只要人家给他改正了错误,就“谢谢”,从来不问为什么这样行、那样不行,更不想知道怎样才能自己改正错误。你一辈子靠别人啊?

授人以渔,不授人以鱼。
2011-08-06 12:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
写C程序,当你决定大量使用库函数的时候,必备的一本就是《库函数参考手册》,每种C平台都有自己的库函数手册,没有那个东西,就不要用这个平台,或者不要用库函数。C的基础性,是它本身的元素已经足以让你重新构建库函数!学C/C++编程,如果沦落到靠库函数生存的地步,不如不学。很多人对VC++嗤之以鼻,其实就是因为有人说VC++的库函数是微软特制的,专用于Windows系统,学那个兼容性不好,必须学纯粹的C/C++。但事实上很多持这种观点的人,却没有意识到自己也在大量使用库函数,只不过此时他用的不是VC++的库函数,而是别的平台的库函数而已。MS-C有一套库函数,后来发展成MFC,你们现在大量使用的库函数,就是这一个体系;Turbo C(Borland公司)也有一套自己的库函数。我以前写C/C++程序的时候,就两套编译器一起用,必须用同一个源代码,写出来的程序必须在两个编译器下编译都通过并正确运行为止,其中有多少差别,是现在的人无法想象的。你会看stdio.h头文件,那里到处都有#ifndef指令,就是专为各种各样编译器和编译开关差异而写的,如果你不打算象我那样同时在多种平台上开发程序,根本就不会意识到那起什么作用。说这些话的意思,是说我们实际上无法摆脱某种平台,要么从良专跟定一个人,要么做婊子。

手头没有库函数手册,最起码安装的运行平台要有齐备的帮助系统。MSDN是使用微软语言系列必备的,Borland C/C++自带帮助。


[ 本帖最后由 TonyDeng 于 2011-8-6 12:38 编辑 ]

授人以渔,不授人以鱼。
2011-08-06 12:31
a9517495424
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:305
专家分:139
注 册:2011-7-20
收藏
得分:0 
回复 3楼 TonyDeng
     原来getch()包含在conio.h ,exit()包含在stdlib.h中 ,不过我以前用win-tc的时候不用包含conio.h这个头文件,直接用就可以了。
2011-08-06 12:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
对了,这样就对,就是这样学。
conio.h,顾名思义,那是专用于con设备IO的库函数,con设备就是屏幕和键盘,与控制台的流设备是不同的,所以要分开。
stdlib.h,是与操作系统交互用的,exit()函数使程序中断、结束,它要告诉操作系统自己做什么,操作系统就会协助它把代码从内存中撤除,这也是与stdio.h流不同的。

授人以渔,不授人以鱼。
2011-08-06 12:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
win-tc预先有个头文件#include进来了,那个头文件自己又#include了conio.h文件,你没看到而已。

授人以渔,不授人以鱼。
2011-08-06 12:43
a9517495424
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:305
专家分:139
注 册:2011-7-20
收藏
得分:0 
  我发现很多资料都不包含那两个头文件
2011-08-06 12:58
a9517495424
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:305
专家分:139
注 册:2011-7-20
收藏
得分:0 
C语言之允许操作两种文件?.exe或其他的可以吗?
2011-08-06 13:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
理论上可以操作任何文件,前提是操作系统容许。注意:对文件进行操作,是调用操作系统功能的,不是C语言自己可以做的。任何语言都不具备这种能力,包括汇编。

程序是狗尾巴,操作系统是狗,尾巴只有在狗指挥下,才能摆动,它自己是摆不起来的。很多程序以为自己做的那些事是自己的,其实不是,没有操作系统的允许,你想摆在这台机器中都不可能,别说运行了。

授人以渔,不授人以鱼。
2011-08-06 13:26
快速回复:文件操作为什么错误
数据加载中...
 
   



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

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