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

Программа которая считывает строку и заменяет последовательность одних символов на другое

24.03.2023, 23:27. Показов 1022. Ответов 5

Author24 — интернет-сервис помощи студентам
Требуется заменить в строке все точки(.) на звездочки(*). Код работает неккоректно, меняет только первую точку в строке. Остальные игнорирует. Как сделать так чтобы код проходил по всей строке и менял символы?
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
    char s[100];
    int i = 0, j;
    FILE* f;
    f = fopen("file.txt", "rt");
    if (f == NULL)
    {
        fprintf(stderr, " Не могу открыть входной файл\n");
        return 1;
    }
    while (1)
    {
        if (fgets(s, 100, f) == NULL)
            break;
        for (i = 0; s[i] != "\0"; i++)
        {
            if (s[i] == '.')
                s[i] = '*';
            i++;
        }
        fclose(f);
        printf("%s", s);
    }
}
Добавлено через 17 минут
Изменил код на такой. Теперь проблема в том, что он меняет все точки до первого числа.
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
    char s[100];
    int i = 0, j = 0;
    FILE* f;
    f = fopen("file.txt", "rt");
    if (f == NULL)
    {
        fprintf(stderr, " Не могу открыть входной файл\n");
        return 1;
    }
    while (1)
    {
        if (fgets(s, 100, f) == NULL)
            break;
        while (s[i] == '.')
        {
            s[i] = '*';
            i++;
        }
    }
    fclose(f);
    printf("%s", s);
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2023, 23:27
Ответы с готовыми решениями:

Написать программу, которая считывает строку символов, которая считывает строку, содержащую только числа (с проверкой символов при вводе) и под¬счи
Написать программу, которая считывает строку символов, которая считывает строку, содержащую только...

Строка: Используя цепочке команды написать программу, которая считывает строку символов с клавиатуры и заменяет в нем пробелы в точки.
Помогите сделать программы (ТАСМ): 1.Используя цепочке команды написать программу, которая...

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

Написать программу, которая каждый встречающийся в строке заданный символ заменяет на заданную последовательность символов, расширяя при этом строку
Написать программу, которая каждый встречающийся в строке заданный символ заменяет на заданную...

Написать программу, которая каждый встречающийся в строке заданный символ заменяет на заданную последовательность символов, расширяя при этом строку
помогите пожалуйста парни задачу решить!!!.задача: Написать программу, которая каждый встречающийся...

5
465 / 336 / 134
Регистрация: 18.07.2017
Сообщений: 1,478
25.03.2023, 15:33 2
Цитата Сообщение от horserofl Посмотреть сообщение
Как сделать так чтобы код проходил по всей строке и менял символы?
C
1
2
char* dot = s;
while(dot = strchr(dot, '.')){ *dot = '*'; }
0
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 13
26.03.2023, 22:33  [ТС] 3
не помогло к сожалению
0
465 / 336 / 134
Регистрация: 18.07.2017
Сообщений: 1,478
26.03.2023, 23:21 4
Цитата Сообщение от horserofl Посмотреть сообщение
не помогло к сожалению
Ну так покажи как используешь. А перед этим объясни мне что делает мой код.
0
0 / 0 / 0
Регистрация: 04.12.2022
Сообщений: 13
28.03.2023, 11:55  [ТС] 5
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
    char line[1000];
    int i = 0, cnt = 0;
 
 
    FILE* file = fopen("file.txt", "rt");
    if (file == NULL)
    {
        printf("Cant open file \n");
    }
    fgets(line, 100, file);
 
    for (i = 0; i < strlen(line); i++)
    {
        if (line[i] == '.')
            line[i] = '*';
    }
 
 
    printf("%s", line);
    fclose(file);
    return 0;
}
сделал так
0
1495 / 907 / 255
Регистрация: 30.06.2015
Сообщений: 4,771
Записей в блоге: 54
03.04.2023, 13:00 6
Цитата Сообщение от horserofl Посмотреть сообщение
сделал так
Код рабочий, только так лучше не делать, а то привыкнешь и тебя просто уволят за непрофессионализм. Если внутри цикла не изменяется длина строки, то лучше делать так:
C
1
2
3
4
5
6
int len=strlen(line);
for (i = 0; i < len; i++)
    {
        if (line[i] == '.')
            line[i] = '*';
    }
Потому что strlen чтобы вычислить длину строки должна пробежать её всю до завершающего нулевого символа, который в языке Си обозначает конец строки. Вот почему на каждой итерации твоего цикла длина строки будет вычисляться снова и снова, а это пустая трата процессорного времени, а в итоге времени твоих будущих пользователей. Увы, язык си это не паскаль, где длина строки известна на этапе компиляции.
0
03.04.2023, 13:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2023, 13:00
Помогаю со студенческими работами здесь

Написать программу, которая в заданном предложении заменяет одну последовательность символов на другую
Напишите программу, которая в заданном предложении заменяет одну последовательность символов на...

Напишите программу, которая заменяет во всей строке одну последовательность символов на другую
Напишите программу, которая заменяет во всей строке одну последовательность символов на другую. ...

Написать программу, которая считывает с клавиатуры строку символов, и имеет функцию, которая возвращает значения
Написать программу, которая считывает с клавиатуры строку символов, и имеет функцию, которая...

Написать программу, которая каждый встречающийся в строке заданный символ заменяет на заданную последовательность символов
Написать программу, которая каждый встречающийся в строке заданный символ заменяет на заданную...

Программа, которая поочередно считывает и обнуляет каждые десять символов
Программа то бесконечно зацикливается, то выводит текущий массив, после которого следует...

В описании дана программа, которая заменяет группу символов в строке на один символ, а нужно на несколько
Что нужно сделать, чтобы группа символов заменялась на другую группу символов, введенных с...


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

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