【问题标题】:scanning a string ,( which produces diverent values in release and debug mode)扫描字符串,(在发布和调试模式下产生不同的值)
【发布时间】:2015-10-23 15:56:58
【问题描述】:
sscanf(path.data(),"%*[D:/Resize/Resize/ScaledImages2/CamLeft_]%s", &cam_value);

在调试模式下cam_value = 36340000.tiff; 而在发布模式cam_value = 0593634000.tiff;(这是要解析的真实值) 为什么字符串在不同模式下解析不同?

【问题讨论】:

    标签: c++ debugging release


    【解决方案1】:

    该格式规范不会将任何内容读入变量中。

    sscanf(path.data(),"%*[D:/Resize/Resize/ScaledImages2/CamLeft_]%s", &cam_value);
    //                   ^^ The * indicates ignore the data. Don't read into any variable.
    

    【讨论】:

    • 但我看到相同的 sipnnet 在发布模式下工作正常(我想从字符串 path.data() 中获取 cam_value,而不是检查 cam_value 的内容,因为它不断变化以适应不同的文件)
    • @GurucharanSrinivas,我最初的回答不正确。
    • path.data() 返回的字符串是什么?您确定这不受不同构建选项的影响吗?
    • path.data() 返回一个字符串“D:/Resize/Resize/ScaledImages2/CamLeft_05936340000.tiff”。现在 &cam_value 在调试模式下获取字符串 "36340000.tiff" ,在发布模式下获取 "05936340000.tiff" ,您可以在调试模式下看到它不占用数字的前 3 位。
    • @P.Hinker 不受不同版本影响是什么意思?我认为它不受影响。
    猜你喜欢
    • 2015-03-25
    • 2014-11-29
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 2011-09-19
    • 2011-10-30
    相关资源
    最近更新 更多