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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2011, 19:48   #11
dykatob
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 38
По умолчанию

// Найти и удалить строку из файла
void FindAndDelLine(FILE*, char* putb, char* stroka);

некоторая функция findanddelline ничего не возвращает, затем в скобках указатели стоят на файл, на строку путь и строку строка которую надо удалить...
этой строкой описывается эта функция я так понимаю,..
это какая та зарезирвированная функция которая осуществляет сразу и поиск и удаление строки из файла? или как?) я этого не пойму) просто я нигде такого не видел)
тем более я щас не знаю куда в программу вставить
void FindAndDelLine(FILE*, char* putb, char* stroka);
чтобы программа работала.. а то что то не работает( вот щас читал про директиву define, для меня оно было вново) но я понял теперь что это... вот теперь хочу с этим разобраться)
жду ответа =)
dykatob вне форума Ответить с цитированием
Старый 29.04.2011, 20:43   #12
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Цитата:
этой строкой описывается эта функция я так понимаю,..
Да, именно, так.

Цитата:
это какая та зарезирвированная функция которая осуществляет сразу и поиск и удаление строки из файла?
Нет, это не зарезирвированная функция, мы сами придумали ей имя, объявили тип передаваемых параметров, и тип возвращаемого значения, написав прототип (это термин для таких объявлений) этой функции:
Код:
// Найти и удалить строку из файла
void FindAndDelLine(FILE*, char* putb, char* stroka);
Потом мы определили эту функцию:
Код:
/////////////////////////////////////////////////////////////////////
// Найти и удалить строки из файла
void FindAndDelLine(FILE* ifp, char* putb, char* stroka) {
}
Цитата:
тем более я щас не знаю куда в программу вставить
void FindAndDelLine(FILE*, char* putb, char* stroka);
Прототип функции нужно писать до первого её вызова. Я пишу все прототипы в самом начале файла.
8Observer8 вне форума Ответить с цитированием
Старый 29.04.2011, 21:06   #13
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Я нашёл хорошую информацию о работе с файлами на Си:
http://alpha.protres.ru/~mlobanov/c_lin/4.htm
8Observer8 вне форума Ответить с цитированием
Старый 29.04.2011, 21:17   #14
dykatob
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 38
По умолчанию

Так с этим я понял... но где же тогда происходит само удаление строки из файла? если мы нигде этого так сказать не прописываем, а прописываем только функцию и ее параметры так сказать... или я недопонимаю что-то...
Вроде всю программу разобрал что есть к чему , ну вот так я ее понимаю:
int main(int argc, char* argv[]) { // - запускаем главную функцию main, ( да кстати, я прочитал про argc и argv, это параметры, первый из которых задает количество аргументов в строке ( так я прочитал в справочнике по C++), а второй является указателем на массив указателей на строки. - это тоже недопонял немног)

char putb[MAX_CHAR]; это задается символьная строка "путь" вместо макс чар будет писаться 1000 при компилировании )
char stroka[MAX_CHAR]; а тут 255 вроде писаться будет из за директивы дефайн)

printf("BBedute puTb FaiLa, koTopbIu Hado otkPbItb\n"); тут выводим на экран запрос на ввод пути к нашему файлу
scanf("%s",&putb); считывай с экрана

FILE* fp = fopen(putb,"r"); используем фопен для чтения файла, используя указатель на файл
if (fp) { \\ тут если файл есть то , на экран выведем сообщение о запросе строки, которую нужно удалить...
printf("BBdedute stroky, kotoreyu Hado ydalutb iz faila:\n");
scanf("%s",&stroka); // потом считываем введенную нами строку...
FindAndDelLine(fp, putb, stroka); // вот это я не очень понял ---? что тут и как используется...
}
else { если файла нету, то выводим сообщение..
printf("File did not found!\n");
}
printf("\nEnd of prog\n");
getch();
return 0;
dykatob вне форума Ответить с цитированием
Старый 30.04.2011, 00:17   #15
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Цитата:
но где же тогда происходит само удаление строки из файла?
По поводу функции:
Код:
fclose(ifp);
У меня “Керниган и Ритчи”, 2009г., изд. Вильямс, второе издание.
Цитата и Кернигана и Ритчи (стр. 17, “7.5 Доступ к файлам”):
Цитата:
Она разрывает связь между внешним именем и файловым указателем, установленную функцией fopen, тем самым освобождая указатель для другого файла.
Здесь:
Код:
FILE* iifp = fopen(putb,"w");
мы создаём файл с тем же именем, но для записи “w”. То есть, мы удалили файл и создали другой, ещё пустой файл с тем же именем, что и предыдущий, но тот был для чтения “r”.

Делее, этот пустой файл мы заполняем массивом строк, в котором отсутствует введённая строка:
Код:
   // Вывод строк в файл
   for(unsigned int count = 0; count < countOfStr; count++) {
      fprintf(iifp,"%s\n", arrOfStr[count]);
   }
Отсутствует она, так как блок кода:
Код:
   // Сравниваем строки
   if (strcmp(strFromFile, stroka)) {
      // Запоминаем строку для вывода
      strcpy(arrOfStr[countOfStr], strFromFile);
      countOfStr++;
   }
не срабатывает (см. Функуцию strcmp() в К.Р. стр.117 или по предметному указателю этой книги), так как при равенстве строк она вернёт ноль. Следовательно в массив arrOfStr[] текущая строка (strFromFile) функцией strcpy() не скопируется.

Цитата:
int main(int argc, char* argv[]) { // - запускаем главную функцию main, ( да кстати, я прочитал про argc и argv, это параметры, первый из которых задает количество аргументов в строке ( так я прочитал в справочнике по C++), а второй является указателем на массив указателей на строки. - это тоже недопонял немног)
#include <stdio.h>

Код:
////////////////////////////////////////////////////////////////////////////////////
// Демонстрация назначения аргументов функции main()
int main(int argc, char* argv[]) {

   // argc - количество переданных аргументов функции main() через командную строку
   printf("argc = %d\n", argc);

   // *argv[] - указатель на массив указателей на строки переданные 
   // функции main() через командную строку
   unsigned int count = 0;
   for (; count < argc; count++) {
      printf("%s%s", argv[count], (count < argc-1 ? " " : " "));
   }
   printf("\n");

   getchar();
   return 0;
}
Запуск программы через командную строку. Указываете путь к исполняемому файлу, включая его имя и параметры через пробел. Параметры будут интерпретированы, как строки, то есть си строки с \0 на конце и указатели на первые элементы этих строк будут помещены в массив argv[].

Пример запуска под Linux:
Пусть я нахожусь в папке с испольняемым файлом. Имя этого файла a.out.:
> ./a.out zero one two three <жмём Enter>
argc = 4
argv[0] = ./a.out
argv[1] = one
argv[2] = two
argv[3] = three

Пример запуска под Windows:
Пуск -> Выполнить -> cmd -> OK > Вводим путь к исполняемому файлу (в двойных ковычках) и параметры через пробел.

argv[0] - как вы можете убедиться, это путь к исполняемому файлу.

Настоянельно рекомендую прочитать параграф "5.10 Аргументы командной строки" в К.Р. (в моей книжке стр. 125).

В остольном, вы всё верно описали.
8Observer8 вне форума Ответить с цитированием
Старый 02.05.2011, 14:44   #16
dykatob
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 38
По умолчанию

блин, вообще печально, все это не работает в borland c =(
надо на борланде как то сделать это(
dykatob вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработать формат текстового файла для записи команд построения примитивов... -SG- Помощь студентам 1 04.06.2010 15:44
можно ли в качестве аргумента функции использовать имя текстового файла Arassir Общие вопросы Delphi 2 31.05.2010 23:12
Создать конкорданс для текстового файла Archik Общие вопросы C/C++ 0 19.05.2010 12:12
Повторное открытие файла txt для редактирования в delphi Shaggrath Помощь студентам 8 20.07.2009 13:36
Открытие файла на чтение функция fopen bigturtle Общие вопросы C/C++ 4 28.01.2009 16:08