С++:работа С Текстовым Файлом.проблема С Заданием Цикла

Тема в разделе "C/C++/C#", создана пользователем studentrtf, 2 июл 2013.

  1. studentrtf

    studentrtf New Member

    Регистрация:
    2 июл 2013
    Сообщения:
    1
    Симпатии:
    0
    День добрый.еще такой вопрос:мне нужно удалять из файла строчку с данными,если есть совпадение с введенной строкой.то есть,если я ввожу фамилию и такая фамилия есть в строке файла,который я открываю,то эту строчку нужно удалить.ПРоблема в том,что я не знаю,как удалить нужную строчку.И еще- вылезает запись "введите фамилию" столько раз,сколько записей в файле.а нужно по идее просто один раз ввести фамилию и чтоб по строчкам пройтись и найти такую подстрочку.Все строчки,в которых нет совпадений,я записываю в новый файл...помогите пожалуйста разобраться
    ВОТ мой код:
    #include "stdafx.h"
    #include <windows.h>
    #include <stdio.h>
    #include < conio.h>
    #include <iostream>
    #include <string.h>
    #include "locale.h"
    using namespace std;


    void main ()
    {
    setlocale(LC_ALL, "Russian");
    system("cls"); // Очистка экрана
    int a,b=1;
    char famil2[30];
    char famil[20];
    char imya[30];
    char otchest[30];
    int nomer;
    int ocenki;
    int i,o,p=1;
    int count=1;
    char s[200];
    FILE*t,*nf;
    t=fopen("D:\\программирование\\прога\\tenis\\tenis\\student.txt","r+");
    if((t=fopen("D:\\программирование\\прога\\tenis\\tenis\\student.txt","r+"))==NULL)
    {printf("Ошибка при открытии файла.\n");
    exit(1);
    }
    nf=fopen ("temp.txt","w");//создаю новый файл для записи внего строк,в которых нет совпадений с введенной фамилией


    while(!feof(t))
    {
    printf("Введите фамилию: ");
    scanf("%s",famil2);
    if (fgets(s,200,t))
    {
    if(s==famil2)//если в строке есть такая фамилия
    {
    char*stud;
    stud=strstr(s,famil2);//функция поиска подстрок в строке
    //не знаю,как удалить строку???
    }
    if (s!=famil2)//если нет совпадений
    fputs(s,nf);//записываю строку в новый временный
    }
    }
    fclose (t);
    fclose (nf);
    remove("D:\\программирование\\прога\\tenis\\tenis\\student.txt");//удаляю прежний файл с данными(но он не удаляется почему-то)
    rename ("temp.txt","stud.txt");//переименовываю временный файл
    system ("pause");
    fclose(t);


    }
     
  2. ixoyz

    ixoyz Member

    Регистрация:
    12 май 2012
    Сообщения:
    16
    Симпатии:
    0
    Ввод фамилии перед циклом надо поставить, а не в тело.
    На сколько понял алгоритм, удаление строки происходит путём не копирования её в новый файл.
     
Загрузка...
Похожие Темы - С++ работа Текстовым
  1. Евгений21
    Ответов:
    1
    Просмотров:
    2.183
  2. neprog
    Ответов:
    1
    Просмотров:
    1.253
  3. vladis222
    Ответов:
    0
    Просмотров:
    1.119
  4. 203
    Ответов:
    9
    Просмотров:
    2.920
  5. DarkVss
    Ответов:
    3
    Просмотров:
    1.915

Поделиться этой страницей