Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 1
Регистрация: 30.12.2016
Сообщений: 6
1

Замена слов в текстовом файле

30.12.2016, 04:43. Показов 3923. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Горит зачёт, очень экстренно нужна помощь, остались считанные часы.
Есть исходный текстовый файл i.txt, в нём фамилии и зарплаты:

Ivanov 1500
Petrov 1600
Sidorov 1700
Kovalev 1800

Нужно: "Изменить строки в исходном файле и поместить данные в выводной файл. Фамилии для изменяемых строк вводятся с клавиатуры. Если строка найдена, выдается запрос на новое значение зарплаты. Признаком окончания ввода служит символ "*"."
Я написал, но работает криво:
1. Не сверяет есть ли вводимая с клавиатуры фамилия в файле i.txt, т.е., позволяет вводить всякую чушь вместо фамилий и эта чушь в выводном файле "подгребает" под себя зарплаты строго в порядке, установленном в исходном файле.
2. Не знаю как сделать цикл, когда в выводной файл должны попасть все фамилии-зарплаты из исходного, а в строке с фамилией, которую набираю с клавиатуры, должна поменяться только зарплата.
Недопрога получилась такая:

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 <string.h>
#include <ctype.h>
 
void read(FILE*file){
    char tmp[100];
    rewind(file);
    while ((fgets(tmp,100,file)))
        puts(tmp);
    printf("---------------------------");      
    rewind(file);
}
int main (void)
{
    char fio [15];  /* Фамилия */
    char dline [] = {"-------------------------------------"};
    long plata;     /* Старая заработная плата */
    int nplata;       /* Новая заработная плата */
    int swin;       /* Индикатор конца файла */
    FILE *i,*o; 
    i = fopen("i.txt","r");
    o = fopen("o.txt","w");
    printf("\nSource file contain:\n\n");
    read(i);
    FILE *fpin,*fpout;  /* Указатели на дескрипторы файлов */
    fpin = fopen ("i.txt", "r"); /* Открытие  файла 1 */
    fpout = fopen ("o.txt", "w");/* Открытие файла 2 */
    for (;;)        /* Чтение данных из файла 1 */
    {
         swin = fscanf (fpin, "%s %ld", fio, &plata);
        if (swin == EOF)     /* Выход из цикла */
           break;            /* по концу файла */
        printf ("\nEnter Last name: ");
        scanf ("%s",&fio); /* Чтение фамилии */
        if(strcmp(fio,"*") == 0) /* Прерывание работы после ввода знака "*" */
        break;
        printf ("\nLast name: %s. Enter new salary: ",fio);
        scanf ("%d",&nplata); /* Чтение новой зарплаты */
        fprintf(fpout,"%s %ld %d\n",fio,plata,nplata);/* Вывод в файл 2 */
    }
    printf ("\nThe list of staff is ended");
    fclose(fpin);  /* Закрытие файла 1 */
    fclose(fpout); /* Закрытие файла 2 */
    fpin = fopen ("o.txt", "r"); /* Открытие файла 2 для чтения */
    printf ("\n\n\n    Last name     Old salary New salary\n%s",dline);
    for (;;)    /* Вывод на дисплей данных из файла 2 */
    {
     swin = fscanf (fpin, "%s %ld %d", fio, &plata, &nplata);
        if (swin == EOF)   /* Выход из цикла */
            break;         /* по концу файла */
        printf("\n%-15s%10ld%8d",fio,plata,nplata);
    }
    printf ("\n%s",dline);
    fclose (fpin);    /* Закрытие файла 1 */
    getchar();        /* Ввод символа */
    getchar();        /* Ввод символа */
    return 0;         /* Выход из программы */
}
В принципе, в выходном файле не требуется иметь три колонки, достаточно и двух. Колонку "Старая зарпата" можно и не выводить, это у меня так получилось, типа, для красоты.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.12.2016, 04:43
Ответы с готовыми решениями:

Поиск и замена в текстовом файле
Помогите пожалуйста написать программу на СИ. Суть такова. Парень имеет дневник в котором хранит...

Замена русских букв на латинские в текстовом файле
Здравствуйте, нужно сделать прогу, чтобы в текстовике ру буквы меняло на англ. Например букву Б на...

Замена символов в строке которая находится в текстовом файле
Нужно заменить все откр.скобки на &quot;*&quot; и закр.скобки на &quot;#&quot; в строке из текстового файла и записать...

В заданном текстовом файле подсчитать количество слов
В заданном текстовом файле подсчитать количество слов и вывести ее на дисплей. С помощью FILE*

0
30.12.2016, 04:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.12.2016, 04:43
Помогаю со студенческими работами здесь

Программа подсчёта числа слов в текстовом файле
Программа подсчёта числа слов в текстовом файле. Результат подсчёта записываются во второй...

Рейтинг слов в текстовом файле, редактирование кода
Помогите пожалуйста с задачей, вожусь с ней уже 2 неделю, но сдвигов нет. суть задачи в том, что...

Посчитать, сколько в файле текстовом строчек, символов и слов
Ребята нужна ваша помощь я написал код а у меня. Непалу чается cделать как надо не знаю что еще...

Замена слов в файле
1. открыть через fopen один файл на чтение, второй на запись. 1.1 количество замен=0 2....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru