![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 06.11.2011
Сообщений: 1
|
![]()
Задание: Имеется два текстовых файла. В первом из них содержится некоторое описание. Переносы слов допускаются. Второй файл содержит список слов, не подлежащих разглашению. Требуется переписать первый файл, заменив каждое из подобных слов точками. Вопрос: Почему при нажатии любой клавиши меня сразу выбрасывает из программы? Нельзя даже путь к файлу прописать...Вот мой код программы:
#include "stdafx.h" #include "string.h" #include <conio.h> #include <fstream> #include <windows.h> #pragma warning(disable: 4996) const int SLOVOLEN = 128; void soob(char msg[255]); struct words { char slovo[SLOVOLEN]; words *next; }; int IsAlphaNum(char c) // ANSI 1251 { if (c >= 'А' && c <= 'Я' || c >= 'а' && c <= 'я' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' || c >= '0' && c <= '9') { return c; }; return 0; }; int fillsequence(words *seq, char *filename) { FILE *fs = fopen(filename, "r"); char c; int i; memset(seq, 0, sizeof(words)); while(!feof(fs)){ i = fscanf (fs, "%c", &c); if (i > 0) if (IsAlphaNum(c) == 0){ if (seq->slovo[0] != 0) { seq->next = new words; seq = seq->next; memset(seq, 0, sizeof(words)); } } else { seq->slovo[strlen(seq->slovo)] = c; } } fclose(fs); return 0; }; int freesequence(words *dict) { if (dict->next != NULL) { freesequence(dict->next); }; delete dict; return 0; }; int findwords(words *dict, char *str) { if (dict != NULL) { if ( strcmp(dict->slovo, str) != 0) { return findwords(dict->next , str); } else { return 1; } }; return 0; } int modifer(words *dict, char *filename_in, char *filename_out) { FILE *fs = fopen(filename_in, "r"); // file source FILE *fd = fopen(filename_out, "w"); // file destination char c; int i; char buf[SLOVOLEN]; memset(buf, 0, SLOVOLEN); while(!feof(fs)){ i = fscanf (fs, "%c", &c); if (IsAlphaNum(c) == 0 && i > 0){ if (findwords(dict, buf) > 0) { fwrite("....", 1, 4, fd); } else { fwrite(buf, 1, strlen(buf), fd); }; fwrite((char *)(&c), 1, 1, fd); memset(buf, 0, SLOVOLEN); } else { buf[strlen(buf)] = c; } } fclose(fs); fclose(fd); return 0; } int main(int argc, char *argv[]) { SetConsoleCP(1251); SetConsoleOutputCP(1251); if (argc < 2) soob("Не указан исходный файл"); if (argc < 3) soob("Не указан файл словаря"); if (argc < 4) soob("Не указан выходной файл"); else if (argv[1] == NULL) soob("Невозможно открыть исходный файл"); else if (argv[2] == NULL) soob("Невозможно открыть файл словаря"); words *dictionary = new words; fillsequence(dictionary, argv[2]); modifer(dictionary, argv[1], argv[3]); freesequence(dictionary); return 0; } void soob(char msg[255]) { printf("%s\n",msg); getch(); exit(0); } |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С++ "текстовые файлы, вычисление авторского инварианта по А.Т Фоменко" | Serega911 | Помощь студентам | 0 | 26.01.2010 16:10 |
Очень нужна помощь по Turbo Pascal...Не могу составить програму,по теме:"Процедуры и файлы"...( | Zara | Помощь студентам | 2 | 02.12.2008 18:23 |
Задача по теме "файлы" | Aleo13 | Паскаль, Turbo Pascal, PascalABC.NET | 13 | 10.11.2008 21:30 |
"Текстовые файлы" и "Графика и подпрограммы" | Nata!!!@ | Помощь студентам | 5 | 05.12.2007 18:17 |