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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2009, 19:18   #1
Diamond2107
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 76
Печаль Си++. Работа с файлами.

Здравствуйте. Не могли бы Вы помочь мне с такой задачей: напишите программу открытия файла и подсчета символов в нем. Программа должна выводить на экран подсчитанное количество символов. А так же которая бы открывала созданный текстовый файл и копировала его в новый файл, с заменой всех букв нижнего регистра на соответствующие буквы нижнего регистра. Остальные символы оставить без изменения.
Ну файл я создала, кол-во символов подсчитала..а вот как копировать его я не понимаю..помогите пожалуйста((

Код:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
      char m[80];
      int c,k;
      FILE *f;
      puts("\n enter string:");
      gets(m);
      f=fopen("text.txt","w");
      if (f==NULL)
      {
      fprintf(stderr,"Error opening file for write");
      exit(1);
      }
      if (fputs(m,f)==EOF)
      {
      fprintf(stderr,"Error writening file");
      exit(1);
      }
      fclose(f);
      f=fopen("text.txt","r") ;
      if (f==NULL)
      {
      fprintf(stderr,"Error opening file for read");
      exit(1);
      }
      rewind(f);
      k=-1;
      while (!feof(f))
      {
       c=fgetc(f);
       k++;
       }
       printf("\n k= %d",k);
       fclose(f);
      system("PAUSE");
      return 0;
}
Diamond2107 вне форума Ответить с цитированием
Старый 06.12.2009, 12:11   #2
Diamond2107
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 76
По умолчанию

Помогите пожалуйста..может есть какая-нибудь функция для копирования((...
Diamond2107 вне форума Ответить с цитированием
Старый 06.12.2009, 12:34   #3
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

копировать значит, считать файл, создать новый и в него скопировать символы первого файла

Цитата:
с заменой всех букв нижнего регистра на соответствующие буквы нижнего регистра
может всё-таки, замена букв нижнего регистра на верхний?) если так то вот
считывает входной файл, копирует его в новый заменяя символы нижнего регистра на верхний, думаю разберешься)
Код:
#include <stdio.h>

int main(void)
{

    
    FILE *fileOne, *newFile;
    fileOne = fopen("input.txt", "r");
    newFile = fopen("copy_input.txt", "w");

    char ch;
    int i;
  
    while(!feof(fileOne)){
        fscanf( fileOne, "%c", &ch);
        if(ch >= 'a' && ch <= 'z')
              ch += 'A'-'a';
        fprintf(newFile, "%c",ch);
    }
    fclose(fileOne);
    fclose(newFile);
    return 0;
}

Последний раз редактировалось NiCola999; 06.12.2009 в 12:51.
NiCola999 вне форума Ответить с цитированием
Старый 06.12.2009, 14:19   #4
Diamond2107
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 76
По умолчанию

Спасибо Вам))разобралась, все работает))
А не подскажешь еще кое-что..я вот создаю текстовый файл..и у меня дана последовательность чисел..как мне записать отрицательные элементы в этот файл?..если можешь..подскажи
Diamond2107 вне форума Ответить с цитированием
Старый 06.12.2009, 14:50   #5
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

вот так=)
Код:
int a[] = {5,-5,-8,2,4,-9};
int size = 6, i;
FILE* f;
f = fopen("file.txt", "w");
for( i=0;i<size; i++) {
   if (a[i] < 0)
       fprintf(f, "%d\n", a[i]);
}
fclose(f);
NiCola999 вне форума Ответить с цитированием
Старый 06.12.2009, 15:21   #6
Diamond2107
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 76
По умолчанию

Ооо..спасибо Вам огромное))..за помощь и такую быструю реакцию
А скажите..вот этот фрагмент программы..он обязателен..ведь и без него все отлично работает..
Код:
 if (f==NULL)
      {
      fprintf(stderr,"Error opening file for write");
      exit(1);
      }
      if (fputs(m,f)==EOF)
      {
      fprintf(stderr,"Error writening file");
      exit(1);
      }
      fclose(f);
      f=fopen("text.txt","r") ;
      if (f==NULL)
      {
      fprintf(stderr,"Error opening file for read");
      exit(1);
      }
?
Diamond2107 вне форума Ответить с цитированием
Старый 06.12.2009, 15:40   #7
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

В принципе не нужна. Если только тот кто будет пользоваться этой программой не будет знать как ей пользоваться
NiCola999 вне форума Ответить с цитированием
Старый 06.12.2009, 16:29   #8
Diamond2107
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 76
По умолчанию

Код:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{     int a[]={1,-1,2,89,56,-78,345,-2,-7,90};
      int size = 10, i;
      FILE *f;
      f = fopen("file.txt", "w");
      for( i=0;i<size; i++) {
      if (a[i] < 0)
      fprintf(f, "%d\n", a[i]);
}

      fclose(f);
      f = fopen("file.txt", "r");
      while(!feof(f)){
      fscanf( f, "%d", &a[i]);
      printf("%d\n",a[i]);  }
      fclose(f);
      system ("PAUSE");
      return 0;
}
Посмотрите..я пытаюсь вывести содержимое файла на экран..а прога последний элемент выводит дважды..не подскажите почему?
Diamond2107 вне форума Ответить с цитированием
Старый 06.12.2009, 17:03   #9
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Потому что когда достигнут конец файла, ему нечего печатать а цикл выполняется, вот он и печатает символ который был перед ним. Надо подумать как исправить...
NiCola999 вне форума Ответить с цитированием
Старый 06.12.2009, 18:18   #10
Diamond2107
Пользователь
 
Регистрация: 22.03.2009
Сообщений: 76
По умолчанию

Посмотрите пожалуйста, что не так..
Diamond2107 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами Корделия Общие вопросы C/C++ 12 03.12.2009 20:25
Работа с файлами Pr1meEX PHP 9 21.06.2009 03:15
Работа с файлами NightFire Паскаль, Turbo Pascal, PascalABC.NET 5 17.05.2009 21:47
Работа с файлами DM_bite Помощь студентам 4 20.09.2008 16:52
Работа с файлами vitalik007 Помощь студентам 13 29.08.2008 15:11