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

Ошибка в программе с потоками - C++

Восстановить пароль Регистрация
 
dyap
2 / 2 / 0
Регистрация: 20.09.2010
Сообщений: 58
25.11.2010, 17:06     Ошибка в программе с потоками #1
Вообщем условие:
Задан текстовый файл Input.txt, состоящий из слов. Разделителями между словами является некоторое множество знаков препинания. Найти в каждой строке слова, записанные прописными буквами, равные по длине слову каждой строки с наибольшей длиной, удалить и дописать в начало строки. Результат записать в новый файл Output.txt. Упорядочить слова в полученных строках по алфавиту, результат сортировки записать в файл Out_sort.txt.
Код:
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
 
FILE *in;
FILE *out;
 
FILE *sort;
char seps[] = " ,.*%$#@!?\t\r\n";
 
bool isWordUpper (char *word){
    for(int x=0; x<strlen(word);x++){
        if(!isupper( word[x] )){
            return false;
        }
    }
    return true;
}
 
int compare( const void *arg1, const void *arg2 ){
    return strcmp( *(char**) arg1, *(char**) arg2 );
}
 
void main ()
{
    setlocale(LC_ALL, "Russian");
 
    in = fopen("input.txt", "r");
   out = fopen("output.txt", "w");
    
    sort = fopen("Out_sort.txt", "w");
    //ofstream sort("out_sort.txt");
    //ofstream out("output.txt");
 
 
    char **words = new char*[2000];
    for (int i = 0; i < 2000; i++){
        words[i] = new char[200];
    }
 
    int n = 0; 
 
    char *str = (char*) malloc (200);
    char *str2 = (char*) malloc (200);
 
    if(in == NULL)    {    
        printf (" Файл не открывается\n");
        return;
    }
    if (feof(in)) {
        return;
    }
 
    
 
    while(fgets(str, 200, in) != NULL) {  
        strcpy(str2, str); 
 
        char *word = strtok( str, seps );
        if (word != NULL){
 
        int max = strlen(word);
 
        while( word != NULL ){
            if (strlen(word) > max){
                max = strlen(word);
            }
            word = strtok( NULL, seps );
        }
 
        word = strtok( str2, seps );
        while( word != NULL ){
            if (isWordUpper(word) && (strlen(word) == max)){
                fputs(word, out);
                fputs(" ", out);
                //out<<word;
                //out<<" ";
 
                strcpy(words[n], word);
 
                n++;
            }
 
            word = strtok( NULL, seps );
        }
 
        fputs("\n", out);
        //out<<"\n";
        }
    }
 
    qsort(words, n, sizeof(char *), compare );
 
    for (int i=0; i<n; i++){
        fputs(words[i],sort);
        fputs("\n",sort);
        //sort<<words[i];
        //sort<<"\n";
    }
 
    //out.close();
    fclose(out);
    fclose(in);     
    fclose(sort);     
    //sort.close();
}
И значит взял для проверки текстовый файл со следующим содержанием:
FFFFFFFFFFFFFFFFFFFFFFF FFFFFFLLFFFFFFFFFFSGSHSHDRWTFFFFFFFFF FFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
klfjgkdfg OOOO *%$##@
GKJKDJGKJD KLKLGDSGJ SDLKGJLISJDG LSDKGJKLSLKDJG LKSDJGLKJ

Получается в файле output.txt в 3 строчке должно быть ОООО, но там просто пустая строка...Вообще ума не приложу в чем проблема...Помогите найти ошибку!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2010, 17:06     Ошибка в программе с потоками
Посмотрите здесь:

ошибка в программе C++
C++ 1 ошибка в программе
Ошибка в программе C++
C++ Ошибка в программе
C++ Ошибка в программе
C++ Ошибка в программе
Ошибка в программе C++
Ошибка в программе C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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