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

Замена слова одно на другое с fgets - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ матрицы в С++ Borland http://www.cyberforum.ru/cpp-beginners/thread67297.html
задана целая матрица E.Найти минимальный элемент среди элементов над главной диагональю (не включая саму диагональ) народ вуручте плиз у меня завтра лабы и эту прогу кровь из носу здать а я не могу додуматься как её намисать,я просто вообще не понимаю с++
C++ МАЭСТРО-ЧАЙНИКУ!!!!!!!!!!!Visual studio C++ Прошу помощи в решении некоторых моих задач: 1.Задан массив из к символов. Найти число, наиболее встречающееся в этом массиве.(Здесь я могу создать только одномерный статический массив, задать его и всё...дальше беда) 2.Задана матрица размером NxM. Получить массив В, присвоив его К-му элементу значение 1, если К-я строка матрицы симметрична, и значение 0 - в противном случае. (Здесь, помимо... http://www.cyberforum.ru/cpp-beginners/thread67292.html
C++ Нужно найти ошибку в STL
Вот мой код main: // student_STL.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "student.h" #include <windows.h> #include <iostream> #include <algorithm>
C++ operator++
Всем доброго времени суток. Вот сделал перегрузку оператора ++ TAvia TAvia::operator++() { TAvia temp; temp.year=this->year+1; return temp; } как сделать чтобы с кнопки результат выводился
C++ модуль http://www.cyberforum.ru/cpp-beginners/thread67253.html
Вычислить бесконечную сумму с точностью . См.формулу не знаю есть хочу примечание к варианту 4.
C++ массивы строк Помогите решить задание используя наипростейшие операторы и библиотеки. 1. Дан масив, с n-тым количеством строк, составить программу которая запрашивает n-тое количество строк, и сообщает: 1.1 Сколько строчек не содержет букв Z. 1.2 Сколько строчек начинается на букву А. 1.3 Сколько строчек содержет более 10 симболов 1.4 Сколько строчек содержет более 2-ух букв в... подробнее

Показать сообщение отдельно
easybudda
Эксперт С++
9441 / 5464 / 926
Регистрация: 25.07.2009
Сообщений: 10,485
30.11.2009, 04:36     Замена слова одно на другое с fgets
Ещё один смелый вариант решения Правда, опять не комильфо - пробелы, табуляцию и прочую фигню не трогает, за то меняет все вхождения строки a на строку b, даже, если а - подстрока другой строки. То бишь "a177" заменится на "troleibusas7"
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define FIN_NAME "1.txt"
#define FOUT_NAME "2.txt"
 
#define REPL_WATH "a17"
#define REPL_TO "troleibusas"
 
/*
    Надо из zod в zod1 перенести все данные, потом там заменить а17 на troleibusas и записать в новый файл.
*/
 
int main(void){
    FILE *fin, *fout;
    size_t repl_wath_size, repl_to_size, inbuf_size, outbuf_size, delta, count;
    char *inbuf, *outbuf, *pbuf, *found;
    
    /* чтение всего содержимого входного файла */
    if ( (fin = fopen(FIN_NAME, "rb")) == NULL ){
        perror("Can't open input file!\n");
        exit(1);
    }
    
    fseek(fin, 0, SEEK_END);
    inbuf_size = ftell(fin);
    rewind(fin);
    
    if ( (inbuf = (char*)malloc(inbuf_size + 1)) == NULL ){
        perror("Memory error!\n");
        exit(1);
    }
    if ( fread(inbuf, 1, inbuf_size, fin) != inbuf_size ){
        perror("Error while reading file!\n");
        exit(1);
    }
    fclose(fin);
    inbuf[inbuf_size] = '\0';
    
    repl_wath_size = strlen(REPL_WATH);
    repl_to_size = strlen(REPL_TO);
    delta = repl_to_size - repl_wath_size;
    
    /* подсчёт количества замен */
    count = 0;
    for ( found = strstr(inbuf, REPL_WATH); found != NULL; found = strstr(found + repl_wath_size, REPL_WATH) )
        count++;
    
    if ( !count ){
        if ( (outbuf = strdup(inbuf)) == NULL ){
            perror("Memory error!\n");
            exit(1);
        }
        outbuf_size = inbuf_size;
    }
    else{
        outbuf_size = inbuf_size + (delta * count);
        if ( (outbuf = (char*)malloc(outbuf_size + 1)) == NULL ){
            perror("Memory error!\n");
            exit(1);
        }
        *outbuf = '\0';
        for ( pbuf = inbuf, found = strstr(pbuf, REPL_WATH); found != NULL; pbuf = found + repl_wath_size, found = strstr(pbuf, REPL_WATH) ){
            strncat(outbuf, pbuf, found - pbuf);
            strcat(outbuf, REPL_TO);
        }
        if ( pbuf < inbuf + inbuf_size )
            strcat(outbuf, pbuf);
    }
    
    if ( (fout = fopen(FOUT_NAME, "wb")) == NULL ){
        perror("Can't open output file!\n");
        exit(1);
    }
    if ( fwrite(outbuf, 1, outbuf_size, fout) != outbuf_size ){
        perror("Can't write to file!\n");
        exit(1);
    }
    
    fclose(fout);
    free(inbuf);
    inbuf = NULL;
    free(outbuf);
    outbuf = NULL;
    printf("Complete.\n");
    exit(0);
}
 
Текущее время: 11:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru