Форум программистов, компьютерный форум CyberForum.ru

Fopen не видит путь к файлу - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Почему visual studio 2008 не видит директиву #include <iostream> http://www.cyberforum.ru/cpp-beginners/thread1242200.html
Здравствуйте! Помогите пожалуйста с решением проблемы. Проблема стоит в том что мой компилятор не видит #include <iostream> и требует ввести "stdafx.h" но если я ее ввожу то у меня перестает видить cin и cout
C++ Для каждой открывающей скобки найти позицию ей соответствующей закрывающей скобки Доброго времени суток. Подскажите пожалуйста алгоритм или путь к решению задачи, используя СТЕК Дана ПСП, ваша задача для каждой открывающей скобочки найти позицию ей соответствующей закрывающей скобочки. пример входные данные (())() выходные http://www.cyberforum.ru/cpp-beginners/thread1242179.html
Корректно ли использовать goto? C++
Читал что оператор goto вообще советуют не использовать, кроме разве что глубоких циклов. Но нормально ли это будет, например, вот в таком коде: int main() { char choice; cin >> choice; while (cin.get() != '\n') { cin.ignore(100, '\n'); bad:cout << "Bad choice. Try again.\n"; cin >> choice;
C++ Найти медианы на всех префиксах последовательности X длины n и вывести их сумму
В этой задаче необходимо найти медианы на всех префиксах последовательности X длины n и вывести их сумму. Медианой последовательности из нечетного (k = 2 ⋅ l + 1) количества элементов будем называть элемент, который стоял бы на (l + 1)-ом месте, если эту последовательность отсортировать. Медианой последовательности из четного (k = 2 ⋅ l) количества элементов будем называть элемент, который...
C++ Требуется идентификатор, исправить ошибки http://www.cyberforum.ru/cpp-beginners/thread1242149.html
Помогите, пожалуйста, исправить ошибки. class rus_codecvt : public std::codecvt<char, char, std::mbstate_t> { protected: virtual result do_in(std::mbstate_t&, const char* from, const char* from_end, const char*& from_next, char* to, char* to_limit, char*& to_next ) const { const int i = std::min(to_limit - to, from_end - from); OemToCharBuff(from, to, i); from_next = from +...
C++ Написать небольшую прогу, которая понимает изменился ли бинарный файл или нет Мне нужно написать небольшую прогу, которая понимает изменился ли бинарный файл или нет. #include <windows.h> #include <string> #include <iostream> #include <fstream> int main(int agrc, char** argv) { std::string fileName = "C:/GameDev/Safty Code challenger/OriginalFiles/house_24.bin"; HFILE hFile; подробнее

Показать сообщение отдельно
Warezovvv
 Аватар для Warezovvv
9 / 9 / 2
Регистрация: 09.12.2012
Сообщений: 219
13.08.2014, 20:38     Fopen не видит путь к файлу
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <map>
 
typedef std::map<std::string, std::string> mapss;
 
// An unsigned char can store 1 Bytes (8bits) of data (0-255)
typedef unsigned char BYTE;
 
// Get the size of a file
long getFileSize(FILE *file);
//Get all files names
std::vector<std::string> getFiles(int argc, char** str);
std::string getFileBuf(const char* filePath);
bool isExist(mapss& files, std::string curFile);
mapss fillExistFiles(std::fstream &result);
bool isChanged(mapss& files, std::string curFile);
 
 
int main(int argc, char** argv)
{
    std::string resultPath;
    std::fstream result;
    result.open(resultPath);
    std::vector<std::string> files = getFiles(argc, argv); 
    mapss existFiles = fillExistFiles(result);
    if (existFiles.empty())
        std::cout<<"No History detected!"<<std::endl;
    result.close();
    
    for(auto file : files)
        if(isExist(existFiles,file))
            if(isChanged(existFiles,file))      
                std::cout<<file<<" ----> " << "not changed!"<<std::endl;
            else
                std::cout<<file<<" ----> " << "changed!"<<std::endl;
        else
        {
 
            result.open(resultPath,std::ios::app);
            result<<file<<" "<<getFileBuf(file.c_str());
            std::cout<<file<<" ----> "<< "added to history!"<<std::endl;
        }
    result.close(); 
    return 0;
}
 
std::string getFileBuf(const char* filePath)
{
    std::cout<<filePath;
    BYTE *fileBuf;          // Pointer to our buffered data
    FILE *file = NULL;      // File pointer
    // Open the file in binary mode using the "rb" format string
    // This also checks if the file exists and/or can be opened for reading correctly
    if (([COLOR="red"]file = fopen(filePath, "rb")) == NULL[/COLOR]) {
        std::cout << "Could not open specified file" << std::endl;
        exit(-1);
    }
 
    // Get the size of the file in bytes
    long fileSize = getFileSize(file);
 
    // Allocate space in the buffer for the whole file
    fileBuf = new BYTE[fileSize];
 
    // Read the file in to the buffer
    fread(fileBuf, fileSize, 1, file);
 
    // Now that we have the entire file buffered, we can take a look at some binary infomation
    // Lets take a look in hexadecimal
    char hexstr[201];
    int i;
    for (i = 0; i < 100; i++)
        sprintf(hexstr+i*2, "%02x", fileBuf[i]);
    //printf("%X ", fileBuf[i]);
    hexstr[i*2] = 0;
 
    return hexstr;
}
 
long getFileSize(FILE *file)
{
    long lCurPos, lEndPos;
    lCurPos = ftell(file);
    fseek(file, 0, 2);
    lEndPos = ftell(file);
    fseek(file, lCurPos, 0);
    return lEndPos;
}
 
std::vector<std::string> getFiles(int argc, char** str)
{
    std::string s;
    for(int i = 1; i < argc; i++)
        s += str[i];
    std::string delimiter = ",";
    std::vector<std::string> files;
    size_t pos = 0;
    while ((pos = s.find(delimiter)) != std::string::npos) {
        std::string token = s.substr(0, pos);
        files.push_back(token);
        s.erase(0, pos + delimiter.length());
    }
    files.push_back(s.c_str());
    return files;
}
 
mapss fillExistFiles(std::fstream &result) 
{
    mapss existFiles;
    std::string str;
    while(true) {   
        if(!result.eof())
        {
            getline(result, str);
            if(str == "")
                break;
            size_t pos = 0;
            std::string delimiter = " ";            
            pos = str.find(delimiter);
            std::string name = str.substr(0, pos);
            str.erase(0, pos + delimiter.length());
            pos = str.find(delimiter);
            std::string hex = str.substr(0, pos);
            existFiles.insert(std::pair<std::string,std::string>(name,hex));
        }           
        else
            break;
    }
    return existFiles;
}
 
bool isExist(mapss& files, std::string curFile)
{
    mapss::const_iterator it = files.find(curFile);
    return it!=files.end();
}
 
bool isChanged(mapss& files, std::string curFile) 
{
    mapss::const_iterator it = files.find(curFile);
 
    return !getFileBuf(curFile.c_str()).compare(it->second); //if similar, return false (logic)
}
В функции getFileBuf в пятьдесят первой строке подчеркнуто то место, в которое передается путь файла, но fopen вообще ее не видит. Передаю типа C:\\hello\\add.txt. Если запихаю это в стринг, инициализрованный рядом, все прекрасно видит. в чем проблема.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru