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

Сформировать массив слов из файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Трабл с вводом/выводом http://www.cyberforum.ru/cpp-beginners/thread1035352.html
Вот есть код: #include <iostream> #include <fstream> using namespace std; int main(){ setlocale(0,""); char a; ifstream in("input.txt"); in>>a; ofstream out("output.txt");
C++ Изменение цвета текста в консоли Как изменить цвет только определённого текста в консоли? Например изменить цвет элементов матрицы, расположенных выше побочной диагонали? http://www.cyberforum.ru/cpp-beginners/thread1035348.html
C++ Работа с файлом
#include <iostream> #include <string> using namespace std; struct STUDENT // структура STUDENT { string name; int group; float ses; };
Определить количество непарных чисел четвертого столбца матрицы C++
Помогите пожалуйста составить программу. Дан массив R(10,10). Определить количество непарных чисел четвертого столбца матрицы
C++ Классы. Фигуры. Наследование http://www.cyberforum.ru/cpp-beginners/thread1035340.html
Создан абстрактный класс Point - ось в трёхмерном пространстве с начальной точкой и высотой. Производный от него Параллелепипед - принимает два параметра (координаты Х У) для установки...
C++ Найти номер минимального непарного элемента рядка, у которого пятый элемент равняется последнему Помогите пожалуйста составить прогу. Дан массив R(8,8) Найти номер минимального непарного элемента рядка, у которого пятый элемент равняется последнему. подробнее

Показать сообщение отдельно
Kastel
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 5
11.12.2013, 02:28  [ТС]
Здравствуйте. Подскажите пожалуйста, как сделать задание?
В файле находится текст неизвестной длины, содержащий слова, знаки препинания и пробелы. Надо сформировать массив слов из этого текста и отсортировать его по алфавиту. Затем записать результат в другой файл.
Как понимаю, тут надо использовать динамическую память с ее изменением, типо realloc, так как длина неизвестна.
Вот, что у меня пока получается. Обнаружил, что strtok не работает с указателем на символьный массив. Что можно тогда сделать? Что я не так делаю? Помогите, пожалуйста.
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
#include<stdio.h>
#include<string>
void main()
{
FILE *fp1;
if((fp1=fopen("f1.txt","r"))!=NULL)
{
    char *c;
    char *word,*words={0};
int n,i;
 while((*c = fgetc(fp1)) != -1)
 {fgetc(fp1);
  if(n==0) break;
  n++;
  c=(char*)realloc(c,sizeof(char)+1);
  c[n-1]=fgetc(fp1);
 }
for(n=strlen(c)-1;i>=0;i--)
{
if(c[i]=='\n') c[i]=' ';
else break;
}
for(n=strlen(c)-1;i>=0;i--)
{
if(c[i]=='!' || c[i]=='?' || c[i]=='.' || c[i]==',' || c[i]==':' || c[i]==';' || c[i]=='"' || c[i]=='<' || c[i]=='>' || c[i]=='(' || c[i]==')') c[i]=0;
else break;
}
i=0;
 
word=strtok(с," ");
while(word)
{
words[i]=word;
printf("Word = %s\n",word);
word=strtok(0," ");
i++;
}
free(c);
fclose(fp1);
}
else printf("ERROR WHILE OPENING FILE\n");
}
Добавлено через 12 минут
Цитата Сообщение от Kastel Посмотреть сообщение
C++
1
2
fgetc(fp1);
* if(n==0) break;
Это лишнее, забыл удалить

Добавлено через 6 минут
Цитата Сообщение от Kastel Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
for(n=strlen(c)-1;i>=0;i--)
{
if(c[i]=='\n') c[i]=' ';
else break;
}
for(n=strlen(c)-1;i>=0;i--)
{
if(c[i]=='!' || c[i]=='?' || c[i]=='.' || c[i]==',' || c[i]==':' || c[i]==';' || c[i]=='"' || c[i]=='<' || c[i]=='>' || c[i]=='(' || c[i]==')') c[i]=0;
else break;
}
и тут правильно будет
C++
1
2
3
4
5
6
7
8
9
10
for(i=n-1;i>=0;i--)
{
if(c[i]=='\n') c[i]=' ';
else break;
}
for(i=n-1;i>=0;i--)
{
if(c[i]=='!' || c[i]=='?' || c[i]=='.' || c[i]==',' || c[i]==':' || c[i]==';' || c[i]=='"' || c[i]=='<' || c[i]=='>' || c[i]=='(' || c[i]==')') c[i]=0;
else break;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru