Замена каждой буквы в строке с помощью цикла - PullRequest
0 голосов
/ 04 января 2019

У меня есть строка с именем "line", которая содержит слово. Слово является случайным каждый раз, и я хотел бы цикл, который может заменить каждую букву в случайном слове звездочкой. Пока у меня есть цикл, который может заменить букву е звездочкой. Есть ли способ изменить этот цикл так, чтобы все буквы были заменены, вместо того, чтобы просто копировать и вставлять этот цикл 25 раз с оставшимися 25 буквами? И для заглавных букв тоже?

Большое спасибо.

  for (w = 0; w <= strlen(line); w++)
    {
        if (line[w] == 'e')
        {
            line[w] = '*';
        }
    }

Ответы [ 3 ]

0 голосов
/ 04 января 2019

Эта программа заменит "word" на "****"

#include <stdio.h>
#include <string.h>

int main(void)
{
    char text[] = "This a paragraph of words where a random word should be replaced with * instead of word when word is found multiple times.";
    char find[] = "word ";

    printf("Start:  %s\n", text);

    while(strstr(text, find))
    {
        memset(strstr(text,find), '*', strlen(find)-1);
    }

    printf("Result: %s\n", text);

    return 0;
}

выход

Success #stdin #stdout 0s 9424KB
Start:  This a paragraph of words where a random word should be replaced with * instead of word when word is found multiple times.
Result: This a paragraph of words where a random **** should be replaced with * instead of **** when **** is found multiple times.
0 голосов
/ 04 января 2019

Просто зациклите строку за символом:

void to_asterisks ( char *line ) {
    while ( *line != '\0' ) {
        *line++ = '*';
    }
}

Это работает, потому что все основные строки заканчиваются NUL, указатель line увеличивается до тех пор, пока не будет достигнут NUL (ноль, показанный выше как char '\ 0'). Функция заменяет символы на месте.

0 голосов
/ 04 января 2019

Хм, если вы хотите поменять все буквы на звездочки, почему вообще выполняется условие? Разве это не то, что вы хотите?

auto c = strlen(line);

for (w = 0; w < c; w++)
{
        line[w] = '*';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...