|
|
发表于 17-10-2008 12:55 PM
|
显示全部楼层
因为你的文件名都错了。
你的是 name.dat.txt, 在code里要开的是 name.dat 。。
将你的文件名改成 name.dat 吧 |
|
|
|
|
|
|
|
|
|
|
发表于 17-10-2008 12:59 PM
|
显示全部楼层
呃。。。我晕了一下。。。你的 program 里面要开的档案是 name.dat,可是你的名字是存在 name.dat.txt 里面。。。你当然无法开到档案,而 print 出来的当然就是不知从哪里来的记忆体内容了。。。狂晕啊啊啊 你的 IDE 没给你警告 Error:File not found 的吗?
建议你关闭 windows 里面的 folder options 的 Hide known file extension 这个无聊的设定吧。。。这是个很祸害人的设定。:@ |
|
|
|
|
|
|
|
|
|
|
发表于 17-10-2008 01:13 PM
|
显示全部楼层
回复 42# geekman 的帖子
老大, 问你一个问题。。。
熟悉win api, 有什么好书,好网站介绍吗? |
|
|
|
|
|
|
|
|
|
|
发表于 17-10-2008 01:19 PM
|
显示全部楼层
|
win32 api 啊。。。 我都是看 Microsoft 的 Win32 API Help File 的。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 17-10-2008 07:25 PM
|
显示全部楼层
最新的screenshot..........
 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 17-10-2008 07:37 PM
|
显示全部楼层
最近问题越来越多 - #include <iostream.h>
- #include <stdlib.h>
- void main()
- {
- char answer, reply[100];
- cout<<"Welcome. Please enter:\n'a' for age\n'd' for address\n's' for status.\n";
- cin>>answer;
- switch (answer)
- {
- case 'a':
- case 'A':
- {
- cout<<"Please enter your age.\n";
- cin.getline(reply, 100);
- cin.get();
- cout<<reply;
- }
- break;
- case 'd':
- case 'D':
- {
- cout<<"Please enter your address.\n";
- cin.getline(reply, 100);
- cin.get();
- cout<<reply;
- }
- break;
- case 's':
- case 'S':
- {
- cout<<"Please enter your status.\n";
- cin.getline(reply, 100);
- cin.get();
- cout<<reply;
- }
- break;
- default:
- cout<<"INVALID choice. \n";
- cin.get();
- break;
- }
- cout<<reply;
- }
复制代码 当user enter a 的时候,他不能够key in 东西, 然后如果他打s 或 d 的话, 他能够打资料, 可是cout 不出来 |
|
|
|
|
|
|
|
|
|
|
发表于 18-10-2008 10:52 AM
|
显示全部楼层
回复 45# Wongkokchoy 的帖子
|
你确定你的name.dat 是存在和你的 .exe 相同的文件夹(C:\USERS\USER\DESKTOP\TEST\)里面? |
|
|
|
|
|
|
|
|
|
|
发表于 18-10-2008 11:02 AM
|
显示全部楼层
回复 46# Wongkokchoy 的帖子
我测试过,都没问题的,不论是a,s还是d,都可以输入,只是没有cout罢了。我想你还是检查一下你的电脑有没有资料损毁(跑一下scandisk, 或者从新安装你的Borland C++)
顺便一提:我用的是Borland C++ Builder 6.0 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 18-10-2008 11:57 AM
|
显示全部楼层
回复 47# geekman 的帖子
|
是的,都是放在同一个location (test folder) |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 18-10-2008 11:58 AM
|
显示全部楼层
回复 48# geekman 的帖子
我把同样的code给其他的朋友test, 也是不能。。。
总不可能说全部都corrupted 吧。。。。 |
|
|
|
|
|
|
|
|
|
|
发表于 18-10-2008 12:20 PM
|
显示全部楼层
啊哈!我终于明白了。。。想了很久才注意到。。。我真是笨呐。
你的 name.dat 被储存成 rtf 格式了!看你的输出的 screen shot 就发现,你的输出画面第一行显示的是 rtf file 的 header!!
重新储存你的 name.dat,这次确定你把这个档案 Save as。。。然后确定你把这个档案save成纯文本档案!
[ 本帖最后由 geekman 于 18-10-2008 12:34 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 18-10-2008 01:09 PM
|
显示全部楼层
就是save as txt file, 然后file name 加 .dat 上去就行了。
file 的问题解决了, 现在轮到switch 的时候了。 为什么我的switch code的cout 不能desplay出来?
还有就是, switch 能够和toupper一起function吗?
- #include <iostream.h>
- #include <ctype.h>
- void main()
- {
- char color;
- cin>>color;
- switch (color)
- {
- case toupper(color)=='M' :
- {
- cout<<"Mustrad";
- break;
- }
- case 'v' :
- {
- cout<<"violet";
- break;
- }
- case 'i' :
- {
- cout<<"ivory";
- break;
- }
- default : cout<<"Invalid";
- }
- cout<<"\nfinish";
- }
复制代码
[ 本帖最后由 Wongkokchoy 于 18-10-2008 01:17 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 18-10-2008 01:32 PM
|
显示全部楼层
|
case不能这样用,因为 toupper(color) == 'M' 这样的写法根本无法成立,就算能够成立,这是一个 compare statement,其结果只会为 true or false,结果就会变成 case true: or case false:. |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 18-10-2008 01:43 PM
|
显示全部楼层
所以 toupper + switch = impossible- #include <iostream.h>
- #include <stdlib.h>
- void main()
- {
- char answer, reply[100];
- cout<<"Welcome. Please enter:\n'a' for age\n'd' for address\n's' for status.\n";
- cin>>answer;
- switch (answer)
- {
- case 'a':
- case 'A':
- {
- cout<<"Please enter your age.\n";
- cin.getline(reply, 100);
- cin.get();
- cout<<reply;
- }
- break;
- case 'd':
- case 'D':
- {
- cout<<"Please enter your address.\n";
- cin.getline(reply, 100);
- cin.get();
- cout<<reply;
- }
- break;
- case 's':
- case 'S':
- {
- cout<<"Please enter your status.\n";
- cin.getline(reply, 100);
- cin.get();
- cout<<reply;
- }
- break;
- default:
- {
- cout<<"INVALID choice. \n";
- cin.get();
- break;
- }
- }
- cout<<reply;
- }
复制代码 至于这个code, 我要怎样改才能够cout呢? |
|
|
|
|
|
|
|
|
|
|
发表于 18-10-2008 07:58 PM
|
显示全部楼层
可以使用toupper():- cin>>answer;
- answer = toupper(answer);
- switch(answer)
- {
- case 'A': //do whatever
- break;
- case 'D': //do whatever
- break;
- .....
- }
复制代码 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 18-10-2008 08:37 PM
|
显示全部楼层
我试着改了, toupper可以用, 可是还是不能够cout
然后我的朋友说borland C++ 的function call, function definition一定要放在main 上面, 不可以放phototype, main 之后才 给function definition。 你认同这个说法吗?
我不是很认同, 因为我做project的时候是放phototype然后在后面define function的。
可是事实却告诉我, 现在把function call 放在后面是不能够run的。。。。
[ 本帖最后由 Wongkokchoy 于 18-10-2008 08:47 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-10-2008 01:14 AM
|
显示全部楼层
还有一个问题, 在 ofstream file_out 的时候:- #include <iostream.h>
- #include <stdlib.h>
- #include <fstream.h>
- ofstream file_out ("empty.dat");
- void main()
- {
- int age=45;
- char *name= "Johan Lee Doe";
- file_out<<"\n\t"<<age;
- file_out<<"\n\t"<<name;
- file_out<<"\n\t"<<name<<" is "<<age<<" years old";
- file_out.close();
- }
复制代码 run的时候只有一片漆黑, 要type什么都不可以 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-10-2008 01:19 AM
|
显示全部楼层
对不起,卡贴了
[ 本帖最后由 Wongkokchoy 于 19-10-2008 01:23 AM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 19-10-2008 01:20 AM
|
显示全部楼层
呃。。。因为你的program根本就没有任何接受输入的指令,也没有在荧幕上输出什么。。。
 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-10-2008 01:24 AM
|
显示全部楼层
回复 59# geekman 的帖子
|
我不是已经把 age和 name initiate了吗? |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|