游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2090|回复: 2

初学C++ 碰到问题, 高手帮忙解答谢了

[复制链接]

4

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2007-10-10 20:51:00 | 显示全部楼层 |阅读模式
想学C++ 于是在图书馆找到一本教材救开始看了。 边看边敲 突然发现一个例子运行老是 ACCESS VIOLATION。。。  偶也不清楚什么原因!单步调试 总是
  1. char * deg = strtok(.. )
复制代码
这里的问题, 开始以为是偶的问题可是测试一下其他的使用strtok的程序并没有问题。。。。。
高手帮忙指点一下到底错哪了?????????????哎。。。


  1. #include<iostream.h>
  2. #include<math.h>
  3. #include<string.h>
  4. const double ANG_TO_RAD = 0.0174532925;
  5. class trig_angle
  6. {
  7.         double angle;
  8.         double ang_sine;
  9. public :
  10.         void sine_value( double );
  11.         void sine_value( char * );
  12. };
  13. void trig_angle::sine_value( double degrees )
  14. {
  15.         angle = degrees;
  16.         ang_sine = sin( angle * ANG_TO_RAD );
  17.         cout << "For an angle of " << angle << "\n";
  18.         cout << "The sine is " << ang_sine << "\n";
  19. }
  20. void trig_angle::sine_value( char * dat )
  21. {
  22.         char * deg;
  23.         char * min;
  24.         char * sec;
  25.         deg = strtok( dat, "," );
  26.         min = strtok( NULL, "," );
  27.         sec = strtok( NULL, "," );
  28.         angle = atof( deg ) + ( atof( min ) / 60.0 ) + ( atof( sec ) / 360.0 );
  29.         ang_sine = sin( angle * ANG_TO_RAD );
  30.         cout << "For an angle of " << angle << "\n";
  31.         cout << "The sine is " << ang_sine << "\n";
  32. }
  33. int main( void )
  34. {
  35.         trig_angle value;
  36.         value.sine_value( 45.0 );
  37.         value.sine_value( "45,55,44," );
  38.         value.sine_value( 60.45 );
  39.         return 0;
  40. }

复制代码
[em10]

2

主题

70

帖子

81

积分

注册会员

Rank: 2

积分
81
发表于 2007-10-11 09:35:00 | 显示全部楼层

Re:初学C++ 碰到问题, 高手帮忙解答谢了

main函数改为

int main( void )
{
    char str[] = "45,55,44,";

    trig_angle value;
    value.sine_value( 45.0 );
    value.sine_value( str );
    value.sine_value( 60.45 );
}

strtok()会把传进去的字符串写掉,所以你传进去一个const的字符串是会出错的。并且msdn也提到这个函数会导致一些安全性的问题,所以,建议你还是自己写一个GetToken函数吧,不要用strtok了。

4

主题

13

帖子

13

积分

新手上路

Rank: 1

积分
13
 楼主| 发表于 2007-10-11 19:21:00 | 显示全部楼层

Re: 初学C++ 碰到问题, 高手帮忙解答谢了

多谢啊!  初学C++ 很多规则都不清楚。。! 获益匪浅!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-16 18:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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