Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
-2 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 60

Замена заданных символов в файле

10.04.2017, 15:37. Показов 1631. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте, есть задача: написать программу, которая осуществляет замену заданных символов в строке или указанном файле.
с unix никогда не работала, с чего нужно начать? если обычно пишу программы на вижал студио, то тут вообще не знаю, где брать компилятор и вообще что делать? заранее спасибо за ответ.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.04.2017, 15:37
Ответы с готовыми решениями:

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

Замена символов в файле
кто нибудь может написать код программы : с консоли ввести путь к файлу и задать три группы по два любых символа ( например a-b, g-k, 1-3)....

Замена символов в файле
Хочу произвести замену символов в файле с ph на f, но выдает ошибку: Traceback (most recent call last): File...

8
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
10.04.2017, 16:56
alinka7701, в терминале для компиляции gcc -o app main.c потом ./app a b 1.txt заменит в 1.txt а на b
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
#include <stdio.h>
 
int main(int argc, char** argv)
{
    if (argc < 4) return -1;
 
    FILE* handle = fopen(argv[3], "r+");
 
    if (handle == NULL) return -1;
 
    char current_char = 0;
    char to_replace = argv[1][0];
    char replacement = argv[2][0];
 
    while ((current_char  = fgetc(handle)) != EOF) { 
        if (current_char == to_replace)  {
            fseek(handle, ftell(handle) - 1, SEEK_SET); 
            fprintf(handle, "%c", replacement);
        }
    }
    fclose(handle);
 
    return 0;
}
0
-2 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 60
10.04.2017, 21:28  [ТС]
надо почитать про этот компилятор, а код, вроде, нормальный,спасибо большое. А как сделать удаление заданного символа в строке или файле?
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
11.04.2017, 04:40
Цитата Сообщение от alinka7701 Посмотреть сообщение
А как сделать удаление заданного символа в строке или файле?
alinka7701, не заметил, вот для строк и файла
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
#include <stdio.h>
#include <stdlib.h>
 
void usage(void)
{
    fprintf(stderr, "usage: app a b -f [file ..] replace in file\n\
            or: app a b -s [string] replace in string\n");
}
 
void s(char *str, char to_replace, char replacement)
{
    for (size_t i=0; str[i]; i++)
        if (str[i] == to_replace) str[i] = replacement;
}
 
void f(const char* path, char to_replace, char replacement)
{
    FILE* handle = fopen(path, "r+");
 
    if (handle == NULL) {
        fprintf(stderr, "Error open %s\n", path); 
        return;
    }
    char current_char = 0; 
    while ((current_char  = fgetc(handle)) != EOF) {                          
        if (current_char == to_replace) { 
            fseek(handle, ftell(handle) - 1, SEEK_SET);
            fprintf(handle, "%c", replacement);
        }
    }
    fclose(handle);
}
int main(int argc, char** argv)
{
    if (argc < 5) {
        usage();
        return -1; 
    }
 
    char current_char = 0;
    char to_replace = argv[1][0]; 
    char replacement = argv[2][0];
 
    switch(argv[3][1]) {
        case 's':
            s(argv[4], to_replace, replacement);
            puts(argv[4]);
            break;
 
        case 'f':
            f(argv[4], to_replace, replacement);
            break;
 
        default:
            usage();
            break;
    }
    return 0;
}
0
-2 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 60
11.04.2017, 21:41  [ТС]
Спасибо большое за помощь, буду разбираться.
0
-2 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 60
13.04.2017, 21:46  [ТС]
а как сделать удаление из файла или строки заданных символов?
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
14.04.2017, 10:48
Цитата Сообщение от alinka7701 Посмотреть сообщение
а как сделать удаление из файла или строки заданных символов?
Как-то так
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
void remove_char_from_string(char *str, char to_remove)
{
    size_t i=0;
    size_t j=0;
    for (; str[i]; i++)
        if (str[i] != to_remove) str[j++] = str[i];
 
    str[j] = '\0';
} 
void remove_char_from_file(const char *path, char to_remove)
{  
    FILE* handle = fopen(path, "r+");
 
    if (handle == NULL) {
        fprintf(stderr, "Error open %s\n", path); 
        return;
    }
 
    FILE* tmp = fopen("tmp", "w");
 
    if (tmp == NULL) {
        fprintf(stderr, "Error open tmpfile\n"); 
        return;
    }
    
    char current_char = 0; 
    while ((current_char  = fgetc(handle)) != EOF) {                          
        if (current_char != to_remove) { 
            fputc(current_char, tmp);
        }
    }
    fclose(handle);
    fclose(tmp);
 
    remove(path); 
    rename("tmp", path);
}
0
-2 / 0 / 0
Регистрация: 12.11.2015
Сообщений: 60
11.05.2017, 14:40  [ТС]
shvyrevvg, не могли бы вы скинуть свою почту? Есть пару вопросов
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
11.05.2017, 18:47
del
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2017, 18:47
Помогаю со студенческими работами здесь

Замена символов в файле
Здравствуйте. Помогите пожалуйста. Нужно заменить в файле символы &quot;%2F%21&quot; на &quot;/!&quot;. Содержимое файла: ...

Замена символов в файле
Доброго времени суток! У меня проблема. Надо написать программу, которая будет изменять символы в текстовой файле (напрмер символы...

Замена символов в файле
Помогите написать. Необходимо заменить символ на символ в документе. Ну, естественно через pascal. Т.е. работа с файлами и текстом.. ...

Замена символов в файле
Добрый день. Помогите, пожалуйста. Еcть текстовый файл (к примеру А) В нём: label_1, label_2,label_3 Нужен shell-скрипт, который ...

Замена заданных букв в текстовом файле на заданные сочетания цифр и восстановление исходного текста
Например у меня есть текст в файле 1.txt &quot;Добрый день!&quot;, и мне нужно сменить все &quot;б&quot; на 00300 и &quot;н&quot; на 10020. И желательно...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru