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

Почему в символьный массив заносится абракадабра - C++

Восстановить пароль Регистрация
 
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
13.12.2011, 13:03     Почему в символьный массив заносится абракадабра #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
38
39
40
41
42
43
44
45
46
47
48
49
50
// sizonov.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
 
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    ////////////////////////////////////////////////////////////////
        int count = 0;
        ifstream f("siz.txt");
        if(!f)
        {
                cout<<"can't open file \n";
        }
        else
        {
                cout<<"open file\n";
                while(!f.eof())
                {
                        char ch;
                        f>>ch;
                        count++;        
                }
                //cout<<count<<endl;
        }
        
    //////////////////////////////////////////////////////////////////  count- число символов в тексте
        
        char *a;
        a=new char[count];
        if(f)
        {
        while(!f.eof())
                {
                    for(int j=0;j<count-1;j++)
                    {
                        f>>a[j];
                    }
                }
        }
        f.close();
    ////////////////////////////////////////////////////////////////// a[count-1] - массив с элементами
 ////////проверяю, что занес в массив для дальнейших манипуляций  с его содержимым
                        for(int l=0;l<count-1;l++)
            cout<<a[l];
        delete []a;
        system("PAUSE");
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2011, 13:03     Почему в символьный массив заносится абракадабра
Посмотрите здесь:

C++ Символьный массив
символьный массив C++
Символьный массив C++
C++ Символьный массив
Символьный массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vandris
 Аватар для Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 90
13.12.2011, 17:18     Почему в символьный массив заносится абракадабра #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
char *a;
a=new char[count];
 
//у вас на момент выделения памяти файловый указатель находится в конце файла, и
//логично что считать данные из конца файла не выйдет, ибо конец файла
f.seekg(0, ios::beg);  //переносим файловый указатель на начало файла и радуемся
 
while(!f.eof())
{
    f>>a[j];
}
f.close();
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
14.12.2011, 10:16  [ТС]     Почему в символьный массив заносится абракадабра #3
Так вот в чем проблема, огромная благодарность от души))))
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
14.12.2011, 10:33  [ТС]     Почему в символьный массив заносится абракадабра #4
хм рановато я обрадовался(((((( использовал перенос чтения файла в начало
но все равно теперь выводит двойную черту(((
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
// sizonov.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <fstream>
 
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    ////////////////////////////////////////////////////////////////
        int count = 0;
        ifstream f("siz.txt");
        if(!f)
        {
                cout<<"can't open file \n";
        }
        else
        {
                cout<<"open file\n";
                while(!f.eof())
                {
                        char ch;
                        f>>ch;
                        count++;        
                }
                //cout<<count<<endl;
        }
        
    //////////////////////////////////////////////////////////////////  count- число символов в тексте
        
        char *a;
        a=new char[count];
        int j=0;
    //////////////////////////////////////////////////////////////////  
        f.seekg(0, ios::beg);
        if(f)
        {
        while(!f.eof())
                {
                 f>>a[j];
                 j++;
                }
        }
        f.close();
    ////////////////////////////////////////////////////////////////// a[count-1] - массив с элементами
        for(int l=0;l<count-1;l++)
            cout<<a[l];////////////выводит абракадабру в виде черты
        delete []a;
        system("PAUSE");
        return 0;
}
Миниатюры
Почему в символьный массив заносится абракадабра  
Vandris
 Аватар для Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 90
14.12.2011, 13:43     Почему в символьный массив заносится абракадабра #5
Проблема все равно таже, файловый указатель стоит в конце файла, просто seekg() бывает почему то не переводит, попробуйте так:
C++
1
2
    f.clear();
    f.seekg(0, ios::beg);
, лично у меня не сработало, и если у вас так же, то просто закройте файл и откройте снова, тогда указатель будет на начале файла и должно отработать
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
14.12.2011, 14:17  [ТС]     Почему в символьный массив заносится абракадабра #6
благодарю все заработало)))))
Yandex
Объявления
14.12.2011, 14:17     Почему в символьный массив заносится абракадабра
Ответ Создать тему
Опции темы

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