Форум программистов, компьютерный форум, киберфорум
Наши страницы

Не работает sscanf - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Многопоточность и решение СЛУ http://www.cyberforum.ru/cpp-beginners/thread1151532.html
Здравствуйте, решаю разреженную СЛУ методом последовательных приближений. Подскажите, пожалуйста, как можно увеличить скорость решения? В частности, будет ли быстрее, если использовать более...
C++ Можно писать в консоли 20 шрифтом программа сделана в турбо 3_0 я хочу пронумеровать четырехугольник от 1 до 7 по координатам х и у 20 шрифтом это можно зробтит в консоли и как? #include <iostream.h> #include <conio.h> #include... http://www.cyberforum.ru/cpp-beginners/thread1151531.html
C++ Заменить код на while do
#include <iostream.h> #include <math.h> #pragma argsused int main(int argc, char* argv) {int kol,i,N,S ; float x ; cout<<"\n N=";cin>>N; for(kol=0, S=0, i = 1;i<= N; i++) ...
C++ Форматировать текст так, что после каждого 4 слова будет перенос строки
Нужна программа которая будет форматировать текст так, что после каждого 4 слова будет перенос строки. Подумал сделать так 1) Читается первое слово из цельного текста 2) Заносится во второй файл,...
C++ Задана строка. Изменить порядок следования символов в 1 и 2 половине строки на обратный http://www.cyberforum.ru/cpp-beginners/thread1151492.html
Всем доброго времени суток! Работать со строками крайне не умею, а сдать нужно. Надеюсь, что поможете. То есть, я понимаю это как введенная строка, разделить его на 2 до определенного...
C++ "XXX.exe не является приложением win32" - перенос проекта на XP Привет всем! Возникла проблема.. написал прогу на плюсах, скомпилил - работает(VS 2012). Решил проверить работу на XP и нифига не получилось. Выдало что "XXX.exe не является приложением win32"... подробнее

Показать сообщение отдельно
Qadabr
2 / 2 / 1
Регистрация: 12.05.2013
Сообщений: 32

Не работает sscanf - C++

19.04.2014, 14:17. Просмотров 483. Ответов 9
Метки (Все метки)

Пишу загрузчик моделей формата obj. Но очень странно себя ведет функция sscanf_s. Вот снимок экрана, где ясно видно, что sscanf_s выдает не то, что от неё хотят:

https://dl.dropboxusercontent.com/u/83673710/sscanf_s.png

Приведу полный код класса:

OBJ.HPP:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <vector>
#include <ctime>
#include <cstdio>
//#include <GL\glew.h>
 
#ifndef OBJ_HPP
#define OBJ_HPP
 
class OBJ_Static
{
private:
    struct vec2
    {
        float x, y;
    };
 
    struct vec3
    {
        float x, y, z;
    };
 
    struct face
    {
        vec3 v, vn;
        vec2 vt;
    };
 
    std::vector<vec3> v, vn;
    std::vector<vec2> vt;
    unsigned self_num;
    //GLuint self_vbo;
    float loadTime;
    bool textured;
    char *path;
    vec3 pos;
 
    static unsigned amount;
 
public:
    bool loaded;
    std::vector<face> faces;
 
    OBJ_Static();
    OBJ_Static(char *_path, bool _loadnow);
    ~OBJ_Static();
 
    void MoveTo(float x, float y, float z);
    void GetPos(float x, float y, float z);
    float GetLoadTime();
    bool Load();
    void Draw();
};
 
#endif
OBJ.CPP:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "OBJ.hpp"
 
unsigned OBJ_Static::amount = 0;
 
OBJ_Static::OBJ_Static()
{
    loaded = false;
 
    pos.x = 0;
    pos.y = 0;
    pos.z = 0;
 
    self_num = ++amount;
 
    //glGenBuffers(self_num, &self_vbo);
}
 
OBJ_Static::OBJ_Static(char *_path, bool _loadnow)
{
    OBJ_Static();
    path = _path;
    if (_loadnow)
        loaded = Load();
    else
        loaded = false;
}
 
OBJ_Static::~OBJ_Static()
{
}
 
bool OBJ_Static::Load()
{
    clock_t cl = clock();
 
    //переменные
    FILE *file;
    char str[256];
    //переменные
    
    fopen_s(&file, path, "r");
 
    while (!feof(file))
    {
        if (fgets(str, sizeof(str), file) == NULL) break;
 
        // Проверяем строку на длину. Если она меньше 7-ми
        // символов, то пропускаем итеррацию
        for (int i = 0; i < sizeof(str); i++)
            if (str[i] == '\n')
                if (i < 7)
                    continue;
 
        if (str[0] == 'v')
        {
            if (str[1] == ' ')
            {
                vec3 vec;
                sscanf_s(&str[2], "%f%f%f", &vec.x, &vec.y, &vec.z);
                v.push_back(vec);
            }
            else
            if (str[1] == 't')
            {
                vec2 vec;
                sscanf_s(str, "vt %f%f\n", &vec.x, &vec.y);
                vt.push_back(vec);
            }
            else
            if (str[1] == 'n')
            {
                vec3 vec;
                sscanf_s(str, "vn %f%f%f\n", &vec.x, &vec.y, &vec.z);
                vn.push_back(vec);
            }
        }
        else
        if (str[0] == 'f')
        {
            unsigned f[9];
            sscanf_s(str, "f %d/%d/%d%d/%d/%d%d/%d/%d\n",
                &f[0],&f[1],&f[2],&f[3],&f[4],&f[5],&f[6],&f[7],&f[8]);
 
            face fc;
            for (int i = 0; i < 9; i += 3)
            {
                fc.v = v[f[i] - 1];
                fc.vt = vt[f[i + 1] - 1];
                fc.vn = vn[f[i + 2] - 1];
 
                faces.push_back(fc);
            }
        }
    }
 
    fclose(file);
    loadTime = (float)(clock() - cl) / CLK_TCK;
    return true;
}
 
float OBJ_Static::GetLoadTime()
{
    return loadTime;
}
 
void OBJ_Static::Draw()
{
    if (!loaded) return;
 
    //glEnableClientState(GL_VERTEX_ARRAY);
    //glDrawArrays(GL_TRIANGLES, 0,
    //  v.size() * sizeof(vec3) / sizeof(float) / 3);
}
В чем может быть ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru