2016-08-02 2 views
0
#include "stdio.h" 
int main() 
{ 
    int toes = 10; 
    printf("toes=%d\t2toes=%d\ttoes2=%d\n",toes,toes+toes,toes*toes); 
    return 0; 
} 

// Это упражнение от c грунтовки плюс. После компиляции и работы работает только второй \ t.Почему первый t не работает?

+1

Что вы имеете в виду _ \ т не work_? – pzaenger

+2

Это работает, но в визуальном представлении не требуется больше одного места? Попробуйте запустить его через hexdump или скопировать и вставить его в редактор, где есть специальная визуализация символов пробелов. – moooeeeep

+0

Вкладка не вставляет x пробелов. Он выравнивает вывод к столбцам в окне консоли. –

ответ

6

Это прекрасно работает для меня. (example)

Выход:

toes=10 2toes=20  toes2=100 

Обратите внимание, что \t означает «табулирование», или, другими словами на площадку до ближайшего кратного Н позиции, где Н, как правило, 8.

toes=10 занимает 7 символов, поэтому для достижения следующего кратного 8 потребуется распечатать 1 пробел.

+0

'2toes = 20' занимает 8 символов, поэтому для выравнивания до следующего кратного 8 потребуется печать 8 пробелов (при условии, что размер вкладок равен 8). – rustyx

+0

Ответы, связанные с внешней ссылкой, бесполезны. И есть близкая причина, если в вопросе нет проблемы. – Olaf

+0

Простите меня ?? Затем покажите мне способ скомпилировать и запустить программу C непосредственно на SO. – rustyx

2

Вставляет текст отступов в фиксированное положение. Это означает, что они не занимают 4-х пространственный промежуток, но создают промежуток, пока не будут совпадать с следующей помеченной позицией.

toes=10 2toes=20  toes2=100 
1234567812345678123456781234567812345678 

Это неудачный пример. Ваши вкладки 8 длинны. Поэтому они останавливают каждые 8 ​​букв. Если вы добавили одно место перед первым \t, ваша вкладка увеличит разрыв.

Лучше выходного форматирование будет достигнуто за счет:

printf("%s%s%s\n", " single", " double", " square"); 
printf("%7d%7d%7d\n", toes, 2*toes, toes*toes); 

Выход:

single double square                                                         
    10  20 100 
0

\t персонаж не будет принимать всегда то же самое место, он будет приспособиться к колонке.

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

1

Работает, но похоже, что это не так !!!

Это потому, что по умолчанию у вас есть tabspace, равный 8spaces. И toes=10 занимает 7 пробелов, и только 1 место, если осталось для \t, чтобы заполнить.

Чтобы увидеть, что он работает изменить ваш printf на:

printf("ts=%d\t2toes=%d\ttoes2=%d\n",toes,toes+toes,toes*toes); 
Смежные вопросы