佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: Wongkokchoy

关于C++的问题。。。。

[复制链接]
发表于 17-10-2008 12:55 PM | 显示全部楼层
因为你的文件名都错了。

你的是 name.dat.txt, 在code里要开的是 name.dat 。。

将你的文件名改成 name.dat 吧
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
最近问题越来越多
  1. #include <iostream.h>
  2. #include <stdlib.h>

  3. void main()
  4. {
  5. char answer, reply[100];
  6. cout<<"Welcome. Please enter:\n'a' for age\n'd' for address\n's' for status.\n";
  7. cin>>answer;

  8. switch (answer)
  9. {
  10. case 'a':
  11. case 'A':
  12. {
  13. cout<<"Please enter your age.\n";
  14. cin.getline(reply, 100);
  15. cin.get();
  16. cout<<reply;
  17. }
  18. break;
  19. case 'd':
  20. case 'D':
  21. {
  22. cout<<"Please enter your address.\n";
  23. cin.getline(reply, 100);
  24. cin.get();
  25. cout<<reply;
  26. }
  27. break;
  28. case 's':
  29. case 'S':
  30. {
  31. cout<<"Please enter your status.\n";
  32. cin.getline(reply, 100);
  33. cin.get();
  34. cout<<reply;
  35. }
  36. break;
  37. default:
  38. cout<<"INVALID choice. \n";
  39. cin.get();
  40. break;
  41. }
  42. cout<<reply;
  43. }
复制代码
当user enter a 的时候,他不能够key in 东西, 然后如果他打s 或 d 的话, 他能够打资料, 可是cout 不出来
回复

使用道具 举报

Follow Us
发表于 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
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 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吗?

  1. #include <iostream.h>
  2. #include <ctype.h>
  3. void main()
  4. {
  5. char color;

  6. cin>>color;
  7. switch (color)
  8. {
  9. case toupper(color)=='M' :
  10. {
  11. cout<<"Mustrad";
  12. break;
  13. }

  14. case 'v' :
  15. {
  16. cout<<"violet";
  17. break;
  18. }

  19. case 'i' :
  20. {
  21. cout<<"ivory";
  22. break;
  23. }

  24. default  : cout<<"Invalid";
  25. }
  26. cout<<"\nfinish";

  27. }
复制代码

[ 本帖最后由 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
  1. #include <iostream.h>
  2. #include <stdlib.h>

  3. void main()
  4. {
  5. char answer, reply[100];
  6. cout<<"Welcome. Please enter:\n'a' for age\n'd' for address\n's' for status.\n";
  7. cin>>answer;

  8. switch (answer)
  9. {
  10. case 'a':
  11. case 'A':
  12. {
  13. cout<<"Please enter your age.\n";
  14. cin.getline(reply, 100);
  15. cin.get();
  16. cout<<reply;
  17. }
  18. break;
  19. case 'd':
  20. case 'D':
  21. {
  22. cout<<"Please enter your address.\n";
  23. cin.getline(reply, 100);
  24. cin.get();
  25. cout<<reply;
  26. }
  27. break;
  28. case 's':
  29. case 'S':
  30. {
  31. cout<<"Please enter your status.\n";
  32. cin.getline(reply, 100);
  33. cin.get();
  34. cout<<reply;
  35. }
  36. break;
  37. default:
  38. {
  39. cout<<"INVALID choice. \n";
  40. cin.get();
  41. break;
  42. }
  43. }
  44. cout<<reply;
  45. }
复制代码
至于这个code, 我要怎样改才能够cout呢?
回复

使用道具 举报

发表于 18-10-2008 07:58 PM | 显示全部楼层
可以使用toupper():
  1. cin>>answer;
  2. answer = toupper(answer);
  3. switch(answer)
  4. {
  5.     case 'A': //do whatever
  6.                  break;
  7.     case 'D': //do whatever
  8.                  break;
  9. .....
  10. }
复制代码
回复

使用道具 举报

 楼主| 发表于 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 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 19-10-2008 01:14 AM | 显示全部楼层
还有一个问题, 在 ofstream file_out 的时候:
  1. #include <iostream.h>
  2. #include <stdlib.h>
  3. #include <fstream.h>

  4. ofstream file_out ("empty.dat");

  5. void main()
  6. {
  7. int age=45;
  8. char *name= "Johan Lee Doe";

  9. file_out<<"\n\t"<<age;
  10. file_out<<"\n\t"<<name;
  11. file_out<<"\n\t"<<name<<" is "<<age<<" years old";
  12. file_out.close();
  13. }
复制代码
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了吗?
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2025 05:01 PM , Processed in 0.110072 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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