Искам да знам дали има команда, която намира кой е типът, който е в променливата, дали е char или int. Например да направя програма, която, ако се въведе нещо, което не е число, показва грешка на потребителя, защото използвам int променлива в scanf, но ако потребителят въведе char, програмата продължава, искам спрете, когато се въведе тип char
Как се диференцира char от int? [затворено]
Отговори (1)
Опитайте да използвате isdigit(int c). Връща ненулева стойност, ако c е цифра, в противен случай il възстановява 0. За повече информация напишете „man isdigit“
person
ddannel
schedule
07.06.2017
Търсих тази функция и преди, но когато тествах, имах грешки, сега търсих повече и от това, което разбрах, трябва да използвам char за тази функция, а не int, което беше, че използвах
- person Morpheus Curriculum Vitæ; 08.06.2017
Не, @MorpheusCurriculumVitæ, трябва да използвате
int
, който съхранява unsigned char
стойност или EOF
. Какво написах за ръководствата по-рано? Можете да намерите ръководството за isdigit
от стандартите на OpenGroup тук. Казва и аз цитирам, Аргументът c е int, чиято стойност приложението трябва да гарантира, че е символ, който може да бъде представен като unsigned char или равна на стойността на макро EOF. Ако аргументът има друга стойност, поведението е недефинирано. Акцентът не е мой.
- person autistic; 09.06.2017
@ddannel Вижте коментара по-горе за моя протест срещу вашето изречение Връща ненулева стойност, ако c е в цифра, в противен случай връща 0.
- person autistic; 09.06.2017
scanf()
фамилията функции, вие просто проверявате стойността, която функцията връща: това е броят на успешните реализации. Така че, ако се опитате да прочететеint x;
от стандартен вход, можете да използвате напр.if (scanf("%d", &x) == 1) { /* Thank you for the value of x */ } else { /* Bad user! Not an integer! */ }
- person Nominal Animal   schedule 07.06.2017fscanf
. В бъдеще, моля, имайте предвид, че C програмистите се очаква да четат ръководства, за да избегнат недефинирано поведение. Open Group има някои хубави ръководства; те обикновено са доста синхронизирани със стандартните ръководства на C, благодарение на приемането на C като системен език за Opengroup/POSIX-съвместими UNIX системи. - person autistic   schedule 07.06.2017