OriginalGriff
Во-первых, сделайте отступ в своем коде! Если вы этого не сделаете - а вы этого не сделали - тогда вам будет труднее понять, что происходит. Это не так уж плохо с таким маленьким кодом, как этот, но когда он становится больше, это может стать чрезвычайно трудным, если вы не сделаете правильный отступ. Стиль отступа - Википедия[^]
Меня не волнует, если вы используете Whitesmiths:
#include <stdio.h>
int main()
{
int choice = 1;
while (choice == 1)
{
int n, count =0;
printf("enter an integer = ");
scanf("%d", &n);
int buffer = n;
while (buffer!=0)
{
buffer/=10;
count++;
}
printf("your number %d has %d digits", n, count);
printf("\n Do you want to use another number? (1 or A if Yes 2 Or B if NO)\n");
scanf("%d", &choice);
}
return 0;
}
Или даже отвратительный 1 ТБ:
#include <stdio.h>
int main(){
int choice = 1;
while (choice == 1){
int n, count =0;
printf("enter an integer = ");
scanf("%d", &n);
int buffer = n;
while (buffer!=0){
buffer/=10;
count++;
}
printf("your number %d has %d digits", n, count);
printf("\n Do you want to use another number? (1 or A if Yes 2 Or B if NO)\n");
scanf("%d", &choice);
}
return 0;
}
Просто выберите стиль и придерживайтесь его!
Когда вы используете scanf для чтения из консоли, тип возвращаемого значения зависит именно от того, что вы указываете в строке формата: в вашем случае "%d" извлекает целочисленное значение, поэтому, если ваш пользователь наберет "1" и нажмет ENTER, оно будет работать ... но если он нажмет "а", он заблокируется, рухнет или иначе потерпит неудачу, потому что "а" - это не целое число!
Я бы посоветовал вам использовать scanf для возврата строки и проанализировать ее, чтобы узнать, что ввел пользователь:
char inp[100];
scanf("%s", inp);
choice = atoi(inp);
И избавьтесь от опции "А" / "Б".
Stefan_Lang
Никогда не слышал о "1 ТБ" как стиле отступа, только размер памяти ;-p
Я знаю этот стиль под названием "египетские скобки" (см. https://blog.codinghorror.com/new-programming-jargon/ ;-) )
Лично я считаю, что Whitesmiths-это худший из возможных стилей, поскольку именно в этом стиле труднее всего определить конец блока. Это очень неприятно в сцепленных блоках if-else.
Любой другой стиль в значительной степени эквивалентен с точки зрения читабельности, за одним исключением: когда выражение (цикл или условие if) перед открывающей скобкой становится слишком длинным или требует нескольких строк, мне не нравится добавлять открывающую скобку в конце (последней строки). Вместо этого я предпочитаю поместить его на следующую строку, даже если в противном случае использую египетский стиль. Тем не менее, вероятно, лучше придерживаться первого (открывающая скобка на новой строке), всегда.
ПО МОЕМУ
OriginalGriff
"Одна истинная скобка" - мерзость в глазах всего того, что есть развитие.
И наоборот, я нахожу Whitesmiths наиболее читаемым, так как весь код, связанный с блоком, имеет отступ до одного и того же уровня, независимо от того, является ли это одной строкой кода или блоком кода со скобками.
Но для того, чтобы создать мир, нужно все!