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

Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется? - C++

Восстановить пароль Регистрация
 
konstantine_
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 14
29.04.2014, 21:08     Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется? #1
Имеется следующий код:
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main ()
{
char row[128];
int row_i=0;
char    time[14];
int         timeout;
char    client_address[15], result_codes[255];
unsigned long   bytes;
char    request_method[255], url[255], rfc931[255], hierarchy_code[255], type[255];
 
ifstream file;
 
file.open("file.txt",ios::in);
 
for (row_i=0; row_i<7; row_i++) {
 
    file    >> time >> timeout >> client_address \
                >> result_codes >> bytes >> request_method \
                >> url >> rfc931 >> hierarchy_code >> type;
 
    cout << time << " " << timeout << "\t" << client_address << "\t" \
            << result_codes << "\t" << bytes << "\t" << request_method \
            << "\t" << url << "\t" << rfc931 << "\t" << hierarchy_code \
            << "\t" << type << endl;
        
    cout << "row_i= " << row_i << endl;
    }
    
file.close();
 
return row_i;
}
$cat file.txt:
C++
1
2
3
4
5
6
7
8
9
10
11
12
1394781640.106 25137    192.168.1.1 TCP_MISS/200    388 POST    [url]http://q70.queuev4.vk.com/im431[/url]  -   HIER_DIRECT/87.240.134.71   text/javascript
1394781645.151 25165    192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
1394781660.022 49   192.168.1.1 TCP_MISS/200    357 GET [url]http://adm.e2e4online.ru/client/postdata.php?[/url]    -   HIER_DIRECT/193.150.124.36  text/html
1394781660.022 47   192.168.1.1 TCP_MISS/200    357 GET [url]http://adm.e2e4online.ru/client/postdata.php?[/url]    -   HIER_DIRECT/193.150.124.36  text/html
1394781666.131 25160    192.168.1.1 TCP_MISS/200    388 POST    [url]http://q70.queuev4.vk.com/im431[/url]  -   HIER_DIRECT/87.240.134.71   text/javascript
1394781671.126 25155    192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
1394781680.001 28   192.168.1.1 TCP_MISS/200    357 GET [url]http://adm.e2e4online.ru/client/postdata.php?[/url]    -   HIER_DIRECT/193.150.124.36  text/html
1394781680.001 26   192.168.1.1 TCP_MISS/200    357 GET [url]http://adm.e2e4online.ru/client/postdata.php?[/url]    -   HIER_DIRECT/193.150.124.36  text/html
1394781688.092 123  192.168.1.1 TCP_MISS/200    373 POST    [url]http://linuxforum.ru/misc.php?[/url]   -   HIER_DIRECT/188.64.170.124  text/html
1394781692.131 25158    192.168.1.1 TCP_MISS/200    388 POST    [url]http://q70.queuev4.vk.com/im431[/url]  -   HIER_DIRECT/87.240.134.71   text/javascript
1394781693.130 156  192.168.1.1 TCP_MISS/200    430 POST    [url]http://vk.com/al_im.php[/url]  -   HIER_DIRECT/87.240.131.120  text/plain
1394781697.127 25156    192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
Вывод работы программы:
Bash
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
konstantine@mgate1_0:01:07_> clang++ test_2.cpp
konstantine@mgate1_0:01:13_> ./a.out
1394781640.106 25137    192.168.1.1 TCP_MISS/200    388 POST    [url]http://q70.queuev4.vk.com/im431[/url]  -   HIER_DIRECT/87.240.134.71   text/javascript
row_i= 0
1394781645.151 25165    192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
row_i= 0
1394781660.022 49   192.168.1.1 TCP_MISS/200    357 GET [url]http://adm.e2e4online.ru/client/postdata.php?[/url]    -   HIER_DIRECT/193.150.124.36  text/html
row_i= 0
1394781660.022 47   192.168.1.1 TCP_MISS/200    357 GET [url]http://adm.e2e4online.ru/client/postdata.php?[/url]    -   HIER_DIRECT/193.150.124.36  text/html
row_i= 0
1394781666.131 25160    192.168.1.1 TCP_MISS/200    388 POST    [url]http://q70.queuev4.vk.com/im431[/url]  -   HIER_DIRECT/87.240.134.71   text/javascript
row_i= 0
1394781671.126 25155    192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
row_i= 0
1394781680.001 28   192.168.1.1 TCP_MISS/200    357 GET [url]http://adm.e2e4online.ru/client/postdata.php?[/url]    -   HIER_DIRECT/193.150.124.36  text/html
row_i= 0
1394781680.001 26   192.168.1.1 TCP_MISS/200    357 GET [url]http://adm.e2e4online.ru/client/postdata.php?[/url]    -   HIER_DIRECT/193.150.124.36  text/html
row_i= 0
1394781688.092 123  192.168.1.1 TCP_MISS/200    373 POST    [url]http://linuxforum.ru/misc.php?[/url]   -   HIER_DIRECT/188.64.170.124  text/html
row_i= 0
1394781692.131 25158    192.168.1.1 TCP_MISS/200    388 POST    [url]http://q70.queuev4.vk.com/im431[/url]  -   HIER_DIRECT/87.240.134.71   text/javascript
row_i= 0
1394781693.130 156  192.168.1.1 TCP_MISS/200    430 POST    [url]http://vk.com/al_im.php[/url]  -   HIER_DIRECT/87.240.131.120  text/plain
row_i= 0
1394781697.127 25156    192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
row_i= 0
1394781697.127 25156   192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
row_i= 1
1394781697.127 25156   192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
row_i= 2
1394781697.127 25156   192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
row_i= 3
1394781697.127 25156   192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
row_i= 4
1394781697.127 25156    192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
row_i= 5
1394781697.127 25156   192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
row_i= 6
Вопрос: "Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется?"

п.с. в обще хотелось бы time считывать сразу в unsigned int тип.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2014, 21:08     Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется?
Посмотрите здесь:

C++ Почему все обнуляется???
Как определить время чтения данных из файла в миллисекундах? C++
Связанный список. Почему nextPtr постоянно 0? C++
C++ Переменная произвольно обнуляется
C++ Почему не обнуляется указатель через функцию?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
29.04.2014, 21:19     Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется? #2
я так понял это время: 1394781640.106 ???

Добавлено через 1 минуту
если это так, то
C++
1
char    time[14];
не достаточно для хранения и нулевой символ, записанный за пределы массива вполне может затирать row_i
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
29.04.2014, 21:20     Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется? #3
Начнем с того, что time в массив из 14 символов не влезет:
не забывайте, что при создании строки в нее дополнительно в конец записывается ноль.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
29.04.2014, 21:23     Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется? #4
так же и
C++
1
char    client_address[15], result_codes[255];
может быть не достаточно для хранения ip-адреса (111.111.111.111 - это 15 символов + завершающий '\0' и получается 16 символов всего)
konstantine_
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 14
30.04.2014, 07:34  [ТС]     Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется? #5
Странно это я учитывал как раз увеличив размерность массива на 1 с 13 до 14, но как видно забыл про точку ))

Благодарю вас после данного изменения всё стало на свои места:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
konstantine@mgate1_10:33:23_> clang++ test_2.cpp
konstantine@mgate1_10:33:28_> ./a.out
1394781640.106 25137    192.168.1.1 TCP_MISS/200    388 POST    [url]http://q70.queuev4.vk.com/im431[/url]  -   HIER_DIRECT/87.240.134.71   text/javascript
row_i= 0
1394781645.151 25165    192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
row_i= 1
1394781660.022 49   192.168.1.1 TCP_MISS/200    357 GET [url]http://adm.e2e4online.ru/client/postdata.php?[/url]    -   HIER_DIRECT/193.150.124.36  text/html
row_i= 2
1394781660.022 47   192.168.1.1 TCP_MISS/200    357 GET [url]http://adm.e2e4online.ru/client/postdata.php?[/url]    -   HIER_DIRECT/193.150.124.36  text/html
row_i= 3
1394781666.131 25160    192.168.1.1 TCP_MISS/200    388 POST    [url]http://q70.queuev4.vk.com/im431[/url]  -   HIER_DIRECT/87.240.134.71   text/javascript
row_i= 4
1394781671.126 25155    192.168.1.1 TCP_MISS/200    325 POST    [url]http://im36v4.vk.com/im3431[/url]  -   HIER_DIRECT/87.240.142.98   text/javascript
row_i= 5
1394781680.001 28   192.168.1.1 TCP_MISS/200    357 GET [url]http://adm.e2e4online.ru/client/postdata.php?[/url]    -   HIER_DIRECT/193.150.124.36  text/html
row_i= 6
Yandex
Объявления
30.04.2014, 07:34     Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется?
Ответ Создать тему
Опции темы

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