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

new на malloc - C++

Восстановить пароль Регистрация
 
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
28.05.2013, 23:27     new на malloc #1
Измените выделение памяти на C - malloc,и почему у меня не открывает текстовый файл?
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
#include "stdafx.h"
 
#include <string.h>
#include <stdlib.h>
#include <Windows.h>
#include <locale.h>
 
int _tmain()
{
 setlocale (LC_ALL,"Russian");
 
 FILE *fp = fopen ("txt.txt","r");
 
  int i=0,j,k=0;
 
  while (!feof(fp))
  {
 
   i++;
  }
 
  int q = i+1;
  
  char **s=new char *[q] ;
  printf ("Текст в текстовом файле: \n");
        for (i=0; i<q;i++)
             {
                 s[i]=new char[100];
                 fgets(s[i],100,fp);
                 printf ("%c ",s[i]);
             }
 
        int kol = 0;
        int uu=strlen(s[i-1]);
         for (int j=uu;s[i-1][j]!=' ';j--)
             if (s[i-1][j]=='a') 
                kol++;
                    printf ("Колличество букв 'а' в последнем слове: %d \n",kol);
                        
 
    printf ("Хотите выделить слово? (y/n)");
    bool ok;
    char c;
    scanf ("%c", &c);
     //ok = ( c == 'y');
    if (c == 'y'){
 
        HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
 
        printf ("Наше слово: \n");
                 for (int j=uu;s[i-1][j]!=' ';j--)
                    {
                         SetConsoleTextAttribute(hConsole,s[i-1][j]);
                         printf ("%c ",s[i-1][j]);
                    }
            }
    
 
            getchar ();
            getchar();
             return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2013, 23:27     new на malloc
Посмотрите здесь:

calloc vs malloc C++
malloc, realloc C++
malloc в С++ C++
malloc() C++
C++ malloc vs new
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2013, 23:38     new на malloc #2
Цитата Сообщение от faLek Посмотреть сообщение
и почему у меня не открывает текстовый файл?
Может потому, что его нет?
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
28.05.2013, 23:41  [ТС]     new на malloc #3
нет ,как раз таки есть могли бы исправить на функцию malloc?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2013, 23:44     new на malloc #4
Цитата Сообщение от faLek Посмотреть сообщение
нет ,как раз таки есть
Как видите, что не открывается?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
28.05.2013, 23:45     new на malloc #5
Цитата Сообщение от faLek Посмотреть сообщение
могли бы исправить на функцию malloc?
malloc(элементы*размер_одного_элемента);
C++
1
malloc(100*sizeof(char));
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2013, 23:47     new на malloc #6
И добавьте
C++
1
#include <stdio.h>
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
28.05.2013, 23:51  [ТС]     new на malloc #7
с выделением памяти ясно,почему файл не открывается,в C++ варианте всё раьотает,а на C перевести беда

Добавлено через 1 минуту
вот написаный мой код на C++,вотперевести его на C выходит проблемкой
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
#include "stdafx.h"
 
#include <string.h>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <Windows.h>
 
using namespace std;
 
int _tmain()
{
 setlocale (LC_ALL,"Russian");
 
 
 ifstream f("txt.txt");
  int i=0,j,k=0;
 
  while (!f.eof())
  {
   if (f.get()=='\n')
   i++;
  }
 
  int q = i+1;
 
  f.clear();
  f.seekg(0);
 
  
  char **s=new char *[q] ;
  cout<<"Текст в текстовом файле: ";
    cout<<endl;
        for (i=0; i<q;i++)
             {
                 s[i]=new char[100];
                 f.getline(s[i],100);
                 cout<<s[i]<<endl;
             }
 
        int kol = 0;
        int uu=strlen(s[i-1]);
         for (int j=uu;s[i-1][j]!=' ';j--)
             if (s[i-1][j]=='a') 
                kol++;
                    cout<<"Колличество букв 'а' в последнем слове: "<<kol;
                        cout<<endl;
 
    cout<<"Хотите выделить слово? (y/n)";
    bool ok;
    char c;
     cin>>c;
     //ok = ( c == 'y');
    if (c == 'y'){
 
        HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
 
        cout<<"Наше слово: ";
            cout<<endl;
                 for (int j=uu;s[i-1][j]!=' ';j--)
                    {
                         SetConsoleTextAttribute(hConsole,s[i-1][j]);
                         cout<<s[i-1][j];
                    }
            }
    
 
            getchar ();
            getchar();
             return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2013, 23:55     new на malloc #8
Тут что должно происходить (1 пост)?
C++
1
2
3
4
5
while (!feof(fp))
{
 
   i++;
}
Добавлено через 3 минуты
После подсчёта не забыть сделать:
C++
1
rewind(fp);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2013, 00:03     new на malloc
Еще ссылки по теме:

C++ new vs malloc
new, malloc, C++
C++ Malloc vs new

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

Или воспользуйтесь поиском по форуму:
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
29.05.2013, 00:03  [ТС]     new на malloc #9
так что это за функция,что она выполняет?
Вот кусок программы который меня интересует,здесь при выводе,правильно ли я вывоже символьный массив на экран?
C++
1
2
3
4
5
6
for (i=0; i<q;i++)
             {
                 s[i]=new char[100];
                 fgets(s[i],100,fp);
                 printf ("%c ",s[i]);
             }
Yandex
Объявления
29.05.2013, 00:03     new на malloc
Ответ Создать тему
Опции темы

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