Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2016, 10:09   #1
numberonee
Новичок
Джуниор
 
Регистрация: 19.06.2016
Сообщений: 4
По умолчанию Пользователь задаёт при запуске файл с текстом и название файла, куда следует записать результат

Пользователь задаёт при запуске файл с текстом и название файла, куда следует записать результат. Для данного файла подсчитать количество предложений и записать в файл с результатом строку в формате:
Название файла: количество предложений


Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int sent_count(FILE * file);

#define SIZE 256

int main(int argc, char* argv[]) {
if (argc < 3) {
printf("Ошибка ввода\n");
exit(EXIT_FAILURE);
}

char * result_filename = argv[argc - 1];
FILE *out = fopen(result_filename, "w");
if (out == NULL)
{
printf("Ошибка ввода\n");
perror(result_filename);
}

for (int i = 1; i < argc-1; i++) {
FILE *in = fopen(argv[i], "r");
if (in == NULL)
{
printf("Ошибка ввода\n");
perror(argv[i]);
} else {
int count = sent_count(in);
fprintf(out, "%s : %d\n", argv[i], count);
}
fclose(in);
}

fclose(out);
return 0;
}

int sent_count(FILE * file) {
char buffer[SIZE];
int count = 0;
char sign;
int size;
while (feof(file) == 0){
size = fread(buffer, sizeof(char), SIZE, file);
if (ferror(file)) {
printf("Error Reading to myfile.txt\n");
exit(EXIT_FAILURE);
}

if (size == 0) {
printf("Файл пустой!");
return 0;
} else {
for (int i = 0; i < size; i++) {
if (ispunct(buffer[i]))
{
if (sign != '\0')
{
count++;
sign = '\0';
}
}
else sign = buffer[i];
}
}
}
return count;
}
Пример работы:
Имеем в директории файл win1.txt, в нём тест, в общем в нём 5 предложений.
И поехали:
./a.out win1.txt win2.txt
В директории создастся файл с именем "win2.txt" и в него запишется:
win1.txt : 5
Имеются ошибки, которые ломают мне голову, помогите исправить, пожалуйста.
Изображения
Тип файла: jpg tYCwQ44TSb8.jpg (49.3 Кб, 57 просмотров)

Последний раз редактировалось Аватар; 19.06.2016 в 10:11.
numberonee вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть файл с текстом. Нужно записать ззадом на перед текст с файла. vova_makr Помощь студентам 7 17.10.2015 21:26
Прочитать из файла числа, отсортировать их по возрастанию, результат записать в новый файл. lika1129970 Паскаль, Turbo Pascal, PascalABC.NET 7 02.04.2013 13:45
Дан файл f, который содержит вещественные числа. Найти сумму чисел и записать результат в новый файл. (Delphi) 2Nboy Помощь студентам 1 08.06.2012 17:01
Разный результат в отладчике и при запуске *.exe pinkiller Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 02.05.2012 16:34
Считывание из файла, имя которого пользователь задаёт сам. Смородинка Общие вопросы C/C++ 2 05.12.2010 16:28