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

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

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

int checkString(const char s[]) {
    unsigned char c;
    while ( (c = *s) && (isalpha(c) || isblank(c))) ++s;
    return *s == '\0';
}

void replacechar(char *s, char c1, char c2) {
    int i = 0;
    for(i = 0; s[i]; i++) {  
        if(s[i] == c1) {
           s[i] = c2;
        }
    }
}

void main() {
    int a;
    unsigned count = 0;
    printf("Enter your number: ");
    while ((a = getchar()) != '~') {
        // If that was in first time - first symbol is dot
        if ((char) a == '.' && count == 0) printf("0.");
        // If second symbol is letter than stop
        if (isalpha((char) a) == 1) printf("%c", (char) a);
    }
}

Ответы (1 шт):

Автор решения: Harry

Я бы делал как-то так, чтобы отвечать всем требованиям (и ввода, и вывода, и посимвольного ввода):

int main()
{
    for(;;)
    {
        char buf[256] = { 0 }, *o = buf;
        printf("Введите число: ");
        int c = getchar();
        if (c == '\n') break;      // Пустая строка - выход
        if (c == '.' || c == ',')  // Точка первая или нет?
            *o++ = '0';
        ungetc(c,stdin);

        int dot = 0;
        for(;;)
        {
            c = getchar();
            if (isdigit(c)) { *o++ = c; continue; } // Цифра
            if (!dot && (c == '.' || c == ','))     // Точка,
            {                          // которой еще не было
                *o++ = '.';
                dot = 1;
            } else break;
        }
        while(c != '\n') c = getchar();
        printf("Вы ввели: %s", buf);
        if (!dot && o != buf) printf(".00");  // Если точки не было,
        puts("");                             // а число было
    }
}

Окончание работы — при вводе пустой строки.

→ Ссылка