2016-01-03 3 views
0

Я попытался заменить символы вычитанием. Это работает, но это оставляет пустое с помощью этого метода:C - Почему вычитание одиночных символов оставляет пустым?

#include <stdio.h> 

int main(void) { 

int c; 

while((c = getchar()) != EOF) { 
    if (c == '\t') 
     putchar('t'); 
    if(c == '\t') 
     c = c - '\t'; 
    putchar(c); 
} 

} 

Сва Substraction, что дает нежелательный выход, и я не мог понять, почему.

Пример входных данных: Привет Вкладка Вкладка

Выход: Привет tabt tabt Вкладка

Цель заключается Привет tabttabttab.

+0

Если вы получаете нежелательный выходной, пожалуйста [редактировать] свой пост, чтобы включить некоторые входные и выходные вы даете/получать выборки. – Arc676

+2

Что вы хотите заменить персонажа? И почему вы считаете, что вычесть это способ сделать это? – kaylum

+0

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

ответ

0

«Пустой» является результатом печати символа NUL (0). Всякий раз, когда вы вводите '\t', вы печатаете NUL, который не является печатным символом.

if(c == '\t')  
    c = c - '\t'; 
putchar(c); // same as putchar(0); if c == '\t' 

Может быть, вы хотите заменить вкладки с -:

if(c == '\t')  
    c = '-'; 
putchar(c); 
+0

Спасибо! Теперь понятно. – Keon

Смежные вопросы