2014-12-10 3 views
0

В программе я хочу стереть слово, если условие становится истинным. есть ли способ сделать это. Я думаю об использовании escape-последовательности.условный backspace. Я хочу использовать условное backspace внутри printf

/* program to print number into words. */ 

# include <stdio.h> 
void main() 
{ 
    char *single_numbers[10]={" ","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"}; 
    char *tens_numbers[9]={"Twenty","Thirty","Fourty","Fifty","Sixty","Seventy","Eighty","Ninety"}; 
    char *teens[9]={"Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"}; 
    int number,thousands,hundreds,tens,units,temp; 
    printf("enter the number"); 
    scanf("%d",&number); 
    if(number>9999) 
    { 
     printf("please enter a number between 0-9999"); 
    }else 
    { 
     thousands=number/1000; 
     hundreds=(number%1000)/100; 
     temp=(number%100); 
     tens=temp/10; 
     units=number%10; 
     if(temp>=20) 
      printf("%s thousand %s hundred %s %s only", 
        single_numbers[thousands], 
        single_numbers[hundreds], 
        tens_numbers[tens-2], 
        single_numbers[units]); 
     else 
      printf("%s thousand %s hundred %s only ", 
        single_numbers[thousands], 
        single_numbers[hundreds], 
        teens[temp-11]); 
    } 
} 
+0

Можете ли вы разместить часть кода, который вы уже написали? Какой язык? Покажите нам программу со всеми остальными частями на месте и комментарий для «здесь, где я хочу стереть слово XYZ». – tomlogic

+0

разрешено? char backspace = "\ b \ b \ b \ b \ b \ b \ b"; – user218324

+0

Да, это разрешено, вас просто попросят предоставить более подробную информацию по вашему вопросу, поэтому у нас есть фактическая отправная точка для написания ответов. Вы можете отредактировать свой вопрос, чтобы включить детали - добавьте достаточно деталей, и модераторы снова откроют вопрос. – tomlogic

ответ

2

Да, можно использовать забой ('\b') перезаписать что-то уже выводимое на экран, но это не метод, вы обычно используете.

Вместо использования символа обратного пробела, чтобы перезаписать то, что вы уже напечатали, измените свой код, чтобы печатать только те части, которые вы хотите. Вот хорошая отправная точка, но вы должны изменить его для покрытия ситуаций как 1000, 0 и 1001.

if (thousands > 0) 
     printf("%s thousand ", single_numbers[thousands]); 
    if (hundreds > 0) 
     printf("%s hundred ", single_numbers[hundred]); 
    if (temp >= 20) 
     printf("%s %s only\n", tens_numbers[tens-2], single_numbers[units]); 
    else 
     printf("%s only\n", teens[temp-11]); 

Другой путь для достижения своей цели будет использовать sprintf() для печати в буфер, и выборочно обрезать буфер для удаления написанных символов. Но подумайте, как это неэффективно: зачем печатать и стирать, когда вы можете просто полностью пропустить шаг печати?