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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Озабоченный
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 13
#1

Работа с файлами. Argv - C++

12.01.2011, 16:11. Просмотров 477. Ответов 2
Метки нет (Все метки)

У меня один вопросик. Я сделал bat файл, который должен считывать из ткст файла пусть к папке, передать ее в качестве аргумента функции main и дальше производится поиск. Программа готова, но как сделать так чтобы из файла в командную строку шло содержимое файла, а не путь ткст файла.

Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2011, 16:11     Работа с файлами. Argv
Посмотрите здесь:

C++ Работа с файлами
C++ работа с файлами
Что есть argc и **argv в функции int main(int argc, char **argv)? C++
C++ Работа с файлами С++
C++ Работа с файлами
C++ работа с файлами
C++ Отличие char *argv[] от char ** argv
C++ Работа с файлами
Работа с файлами C++
C++ Работа с файлами
Работа с файлами C++
Работа с файлами C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mayonez
380 / 272 / 20
Регистрация: 26.12.2009
Сообщений: 875
12.01.2011, 16:37     Работа с файлами. Argv #2
Цитата Сообщение от Озабоченный Посмотреть сообщение
чтобы из файла в командную строку шло содержимое файла, а не путь ткст файла.
а зачем. если программа имеет путь к файлу то может и получить его содержимое
Озабоченный
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 13
12.01.2011, 16:42  [ТС]     Работа с файлами. Argv #3
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#include <iostream>
#include <windows.h>
#include <cstdio>
#include <fstream>
#include <ostream>
#include <string>
#include <conio.h>
using namespace std;
 
bool differentLineClose(FILE *streamin, FILE *strenout, int count);
void RecursiveFileSearch (char *filename);
 
bool CheckTest (char *filename)
{
    cout << filename;
    RecursiveFileSearch (filename);
 
    const char *fileNameFirst = "test_real1.txt";
    const char *fileNameSecond = "test_out.txt";
                
    FILE *fileInput;
    FILE *fileOutput;
 
    fileInput  = fopen(fileNameFirst, "rt");
    fileOutput = fopen(fileNameSecond, "rt");
 
    if (fileInput == NULL)
    {
        cout<<"Cannot open file.\n";
        return false;
    }
 
    else if (fileOutput == NULL)
    {
        cout<<"Cannot open second.\n";
        return false;
    }
 
    int countLine = 1;
    char lineInput[255], lineOutput[255];
    for (;;)
    {
        fgets(lineInput, 255, fileInput);
        fgets(lineOutput, 255, fileOutput);
        if (strcmp(lineInput,lineOutput))
        {
            if (feof(fileOutput) && feof(fileInput))
            {
                differentLineClose(fileInput, fileOutput, countLine);
                return false;
                } 
                else if (!feof(fileOutput) && !feof(fileInput))
                {
                    differentLineClose(fileInput, fileOutput, countLine);
                    return false;
                }
                        
            }
               
            if (feof(fileOutput))
            {
                if (feof(fileInput))
                {
                    differentLineClose(fileInput, fileOutput, 0);
                    return true;
                }
 
                differentLineClose(fileInput, fileOutput, ++countLine);
                return false;
            }
                
            else if (feof(fileInput))
            {
                differentLineClose(fileInput, fileOutput, ++countLine);
                return false;
            }
 
            ++countLine;
    }
}
void RecursiveFileSearch(char *folder_name)
{
    //создаем выходной файл
    char buf[MAX_PATH] = {0};
    strncpy(buf, "test" , strlen("test") );
    strcat(buf, "_out.txt");
    ofstream file_out(buf);
 
    //структура для хранения найденного файла
    WIN32_FIND_DATA file_find_data;
    HANDLE file_find_handle;
    
    file_out << folder_name << endl;
 
    //выделяем память под найденную строку
    char *find_string = new char[strlen(folder_name)+5];
 
    //копируем folder_name в find_string
    strcpy(find_string, folder_name);
    strcat(find_string, "\\*.*");   
 
 
    //если find_string и file_find_data не равны, возвращается INVALID_HANDLE_VALUE
    file_find_handle = FindFirstFile(find_string, &file_find_data);
    if (file_find_handle != INVALID_HANDLE_VALUE) 
    {
        do
        {
            //если директория
            if (file_find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            {
                //если файл найден (strcmp возвращает 0) идем дальше
                if ((strcmp(file_find_data.cFileName, ".") == 0) ||
                (strcmp(file_find_data.cFileName, "..") == 0))
                {
                    continue;
                }
 
                char *find_subdir = new char[strlen(folder_name)+strlen(file_find_data.cFileName)+5];
 
                strcpy(find_subdir, folder_name);
                strcat(find_subdir, "\\");
                strcat(find_subdir, file_find_data.cFileName);
                RecursiveFileSearch(find_subdir);
                delete[] find_subdir;
            } 
            else 
            {
                file_out << file_find_data.cFileName << endl;
            }
        } 
        /// продолжаем поиск
        /// file_find_handle возвращен из предыдущего вызова FindFirst
        while (FindNextFile(file_find_handle, &file_find_data));
    }
 
    delete[] find_string;
}
    
int main(int argc, char *argv[])
{   
 
 
    cout << boolalpha << CheckTest(argv[1]);
    
    system("PAUSE");
    return 0;
}
 
//закрываем файлы и печатаем есть ли различия в файлах или нет
bool differentLineClose(FILE *streamin, FILE *streamout, int count)
{
    if (count == 0)
    {
        return true;
    }
 
    else
    {
        return false;
    }
    fclose(streamin);
    fclose(streamout);
    system("PAUSE");
}

передается только имя файла, но не содержимое
Yandex
Объявления
12.01.2011, 16:42     Работа с файлами. Argv
Ответ Создать тему
Опции темы

Текущее время: 19:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru