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

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

Войти
Регистрация
Восстановить пароль
 
Novij
3 / 3 / 0
Регистрация: 12.12.2010
Сообщений: 99
#1

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

13.12.2011, 13:03. Просмотров 483. Ответов 5
Метки нет (Все метки)

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++
в отмеченном месте выдает ошибку доступа для записи в первом случае, во втором все нормально, почему? #include&lt;iostream&gt; using...

Пользователь вводит длину сторон пятиугольника, каждая сторона заносится в массив, вычислить периметр - C++
Пользователь вводит длину сторон пятиугольника, каждая сторона заносится в массив, необходимо вычислить периметр пятиугольника (периметр –...

Чем отличаются двумерный символьный массив и массив указателей на строки - C++
Двумерный символьный массив и массив указателей на строки. Собственно чем они отличаются? Заранее спасибо.

32-разрядный символьный массив - C++
Как представить в виде 32 разрядного символьного Массива целое число?O_o

Литерный, символьный массив - C++
1)Объявить строку ng3 как литерный массив, не указав длину строки, и инициализировать ее значением “HTML++Java”. 2)Объявить массив er из...

Массив указателей на символьный массив - C++
Программа пишет название месяца, после ввода переменной &quot;y&quot;. #include &lt;stdio.h&gt; #include &lt;iostream.h&gt; char* int2month(int nMonth); ...

Разделить символьный массив на лексемы - C++
Нужно разделить символьный массив на лексемы. Новая лексема - от и до мат. знака (&quot;+&quot;, &quot;-&quot;, &quot;*&quot;,...

Символьный массив, считываемый из файла - C++
Из текстового файла считывается массив символов. Нужно считать из файла только те символы, которые являются буквами латинского алфавита. ...

Символьный массив. Очень легко. - C++
Написать программу, функция которой получит в качестве параметра символьный массив, после чего удалит из него два символа стоящих рядом,...

Sizeof и Динамический символьный массив! - C++
В первом примере sizeof показывает кол-во элементов в массиве! #include&lt;iostream&gt; #include&lt;cmath&gt; using namespace std; void main() ...

Запись текста в символьный массив - C++
Доброго времени суток :) Есть переменная которой я хочу присвоить HTML код но в этом HTML коде есть переменная в которою в зависимости от...

Символьный массив и указатель на char - C++
Читал уже где-то на форуме тему, где показывалась разница между:char mas=&quot;Hello&quot;; char * ptr=&quot;World&quot;; Но из всего я понял только то, что...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vandris
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 92
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
63 / 63 / 13
Регистрация: 19.01.2011
Сообщений: 92
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     Почему в символьный массив заносится абракадабра
Ответ Создать тему
Опции темы

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