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

файлы - C++

Восстановить пароль Регистрация
 
Raphael92
0 / 0 / 0
Регистрация: 12.10.2010
Сообщений: 154
04.01.2011, 20:19     файлы #1
Пожалуйста напишите программу в си (через файлы), которая бы считывала текст бы из одного текстового документа и записывала этот текст в другой файл
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2011, 20:19     файлы
Посмотрите здесь:

C++ Файлы
Файлы C++
C++ файлы
C++ нужно переделать код (из Файлы текстовые (FILE*) в Файлы текстовые (потоки))
Файлы.Текстовые файлы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kenwood2010
48 / 59 / 7
Регистрация: 26.11.2010
Сообщений: 192
05.01.2011, 04:37     файлы #2
Реализовано на С++ Builder 6.0
написано на языке программирования Си
Задача скопировать все строки из одного файла в другой удалив строку содержащую максимальное количество слов

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
//---------------------------------------------------------------------------
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
 
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
 
 
int MaxWord(char* path, FILE *in) //функция для определния строки с максимальным количеством слов
{
  char FileStr[80]="\0";      //читаем стрку из файла
  char word[80]="\0";         //читаем слово из строки
  int j = 0;                  //позиция начала для word[80]
  int count = 0;          //для определения количества слов в прочитаной строки
  int countMax = 0;          //для сравнения слов с предыдущей прочитаной строкой
  int str = 0;             //для определения номера прочитанной строки
  int strMax = 0;            //для определения строки с максимальным количеством слов
   while (!feof(in)) //читаем содержимое файла
  {
   fgets(FileStr,80,in); //считываем строку из файла
   count = 0;
   str++;
   for(int i=0; i < strlen(FileStr) + 1; i++)
    {
   while (FileStr[i]!=' '&& FileStr[i]!='\0')
    {
      word[j++] = FileStr[i++];
    }
     count++;
     for(int k = 0; k < sizeof(word); k++) {word[k] = '\0';}
     j = 0;
    }
     if(count > countMax)
     {
      strMax = str;
      countMax = count;
     }
 //  puts(fs); //выводим на экран
  }
 fclose(in);      //закрытие файла
 return strMax;
}
 
 
 
int main()
{
 /*Переменные*/
 
 FILE* in;   //откуда копировать
 char pathFileIn[80];   //путь файла откуда копировать
 printf("Input file path -> "); //запрос на ввод пути к файлу
 scanf("%s", pathFileIn); //запись путь в буфер
 
 
 FILE* out;              //куда копировать
 char pathFileOut[80];   //путь файла куда копировать
 printf("Output file path -> "); //запрос на ввод пути к файлу
 scanf("%s", pathFileOut); //запись путь в буфер
 
 int Str = 0;         //для подсчета строки
 char fs[80] = "\0";  //для считывания строки из файла
 
 
 
 if(!(in = fopen(pathFileIn, "r"))) //сначало проверка на существование файла
 {
  fprintf(stderr, "Output file error!!!");
  getch();
  exit (1);
 }
 out = fopen(pathFileOut, "w"); //если нет файла создаст его
 
 int strMax = MaxWord(pathFileIn, in); //определяем строку с максимальным количеством слов
 
 in = fopen(pathFileIn, "r"); //открываем файл еще раз
  while (!feof(in)) //читаем содержимое файла
  {
   fgets(fs,80,in); //считываем строку из файла
   Str++;
  if(Str != strMax)
   {
   fputs(fs,out); //считываем строку из файла
   }
  }
 
//Закрытие файлов
 fclose(in);
 fclose(out);
 getch();
 return 0;
}
//---------------------------------------------------------------------------
Вложения
Тип файла: rar Zadanie.rar (37.4 Кб, 9 просмотров)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
05.01.2011, 05:26     файлы #3
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
#include <stdio.h>
#include <malloc.h>
#include <string.h>
 
int main()
{
    const int max_str_len=256;
    char** Arr;
    char tmp[max_str_len];
    char file_name[max_str_len];
    printf("Enter name of file for input: ");
    fgets(file_name, max_str_len, stdin);
    file_name[strlen(file_name)-1]='\0';
    FILE* f=fopen(file_name, "r");
    if(f == NULL)
    {
        printf("Error with opening file %s\n", file_name);
        return 1;
    }
    int cnt=0;
    while(!feof(f))
    {
        fgets(tmp, max_str_len, f);
        ++cnt;
    }
    Arr=(char**) malloc(cnt*sizeof(char*));
    int i;
    for(i=0; i<cnt; ++i)
        Arr[i]=(char*) malloc(max_str_len*sizeof(char));
    rewind(f);
    i=0;
    while(!feof(f))
    {
        fgets(Arr[i], max_str_len, f);
        ++i;
    }
    fclose(f);
    printf("Enter file name for output: ");
    fgets(file_name, max_str_len, stdin);
    file_name[strlen(file_name)-1]='\0';
    FILE* f2=fopen(file_name, "w");
    if(f2 == NULL)
    {
        printf("Error with opening file %s\n", file_name);
        return 1;
    }
    i=0;
    while(i != cnt)
    {
        fputs(Arr[i], f2);
        ++i;
    }
    printf("Succesfull. End\n");
    for(i=0; i<cnt; ++i)
        free(Arr[i]);
    free(Arr);
    return 0;
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
05.01.2011, 07:30     файлы #4
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
#include <stdio.h>
#include <stdlib.h>
 
#define IFILE "input.txt"
#define OFILE "output.txt"
 
int main()
{
    FILE* fi;
    FILE* fo;
    char buf[BUFSIZ];
    size_t cnt;
    if(((fi = fopen(IFILE, "rb")) == NULL) ||
        ((fo = fopen(OFILE, "wb")) == NULL))
    {
        perror("fopen");
        exit(1);
    }
    
    while((cnt = fread(buf, sizeof(char), BUFSIZ, fi)) ==  BUFSIZ * sizeof(char))
        if(fwrite(buf, sizeof(char), cnt / sizeof(char), fo) != cnt)
        {
            fprintf(stderr, "Error writing to file \'%s\'\n", OFILE);
            exit(2);
        }
        
    if(ferror(fi))
    {
        fprintf(stderr, "Error reading from file \'%s\'\n", IFILE);
        exit(3);
    }
    
    if(cnt > 0)
        if(fwrite(buf, sizeof(char), cnt / sizeof(char), fo) != cnt)
        {
            fprintf(stderr, "Error writing to file \'%s\'\n", OFILE);
            exit(4);
        }
    
    fclose(fi);
    fclose(fo);
    exit(0);
}
Yandex
Объявления
05.01.2011, 07:30     файлы
Ответ Создать тему
Опции темы

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