Елементи на езиците c и c
Програма за копиране на символни файлове. Опция 1
Нека напишем програма, в която входният файл ще се въвежда от клавиатурата (стандартното входно устройство е клавиатурата) и ще се показва на екрана (вие-
дадения знак да го съпостави с въпросителен знак и, ако се намери такова съвпадение, да завърши въвеждането.
Както вече знаем, за да започне функцията getchar да въвежда всеки символ, въведен на клавиатурата, е необходимо да натиснете клавиша след въвеждане на група знаци (т.е. низ). Натискането на този клавиш съответства на символа \n - символът за нов ред. Ако искаме да се ограничим до въвеждане на низ, тогава \n може да се счита за знак за край на въвеждане на файл. Ако искаме да въведем група редове и след това да уведомим програмата, че въвеждането е завършено, тогава някакъв контролен код (от диапазона O-31 на ASCII таблицата) или, както видяхме, някакъв друг знак може да се използва като знак за край на файла.
Ако използвате стандартния знак за край на файла (натискане на + ), тогава трябва да направите следното: след въвеждане на последния знак от последния ред и натискане на клавиш (така че функцията getchar да започне да обработва въведените знаци), трябва да натиснете клавишната комбинация + , след това клавиша (така че знакът от + да бъде обработен и по този начин цикълът while да приключи), след което трябва да натиснете отново клавиша (за да премине функцията getch ().
Ако обозначим символична константа, която определя стойностите на терминатора за въвеждане от клавиатурата като eof, тогава, използвайки оператора #define, В началото на програмата за въвеждане от клавиатурата можем да напишем: #define eof -1 терминатор за въвеждане от клавиатурата
/* знак за край на входа
знаци от клавиатурата*/
А сега нека започнем да компилираме най-простите програми за работа със символни данни.
бяганеустройство със стандартен екран). Текстът на програмата е показан в листинг 2.1.
b.spp : Дефинира входната точка за конзолното приложение.
#include за getch()
tinclude за getchar(), putchar()
#define eof -1 знак за край на файла +
int tmain(int argc, TCHAR* argv[]) (
printf( Направете въвеждане>\n); c=getchar() ; докато (c != eof)
getch(); /*въвежда символ, но без ехо (за забавяне на екрана)*/
Променливата c, в която се въвежда един символ, се декларира като int, а не като char. Защо? Въпросът е, че в езика C типовете char и int са взаимозаменяеми (променливата c всъщност съдържа кода на символа, т.е. някакво число).
От друга страна, за да определим кога е достигнат краят на въвеждането от клавиатурата, трябва да сравним съдържанието на променливата c с числото eof. Ето защо променливата c се декларира като int.
Функцията printf отпечатва подкана за въвеждане на екрана. След това се въвежда първата стойност на променливата c (както се съгласихме по-рано, въвеждаме ред на клавиатурата и натискаме клавиша, след което getchar
един знак наведнъж). След това, с помощта на оператора на цикъла while (), започва цикличната обработка на входа / изхода на символи.
Веднага щом натиснем клавишната комбинация +, неговият код (числото -1) ще се появи в променливата c. Тъй като условието за изпълнение на оператора while () е нарушено (стойността на променливата c става равна на eof), управлението ще бъде прехвърлено към следващия оператор след оператора while o. Това ще бъде функцията getchO, която ще изисква да въведете знак от клавиатурата. Докато не натиснем който и да е клавиш, getch () ще чака въвеждане, а в този момент ще гледаме картината на екрана и ще познаем какво сме получили. Ако натиснем произволен клавиш, нашата програма ще приключи.
Нещо трябва да се изясни:независимо дали сме показали знака на екрана или не, той ще бъде показан на екрана от функцията getchar(). В такъв случай се казва, че getchar работи с ехо. Следователно, когато функцията putchar ще работи
За да консолидирате материала, препоръчително е да стартирате програмата в режим на отстраняване на грешки, за да видите подробно как всъщност се случва всичко. За да направите това, щракнете в полето за свързване вляво от командата while (с !=eof). Това поле ще бъде маркирано с червена топка. Това е така наречената точка на прекъсване на програмата (в опцията Debug на главното меню на средата, ще я намерите под името точка на прекъсване). Програмата трябва да бъде стартирана за изпълнение в режим на отстраняване на грешки: или чрез натискане на клавиша, или чрез използване на командите DebugjStart Debugging.
Въведете например знаците: 1, 2, 3. Техните кодове според ASCII таблицата: 49, 50, 51. След натискане на клавиша програмата ще спре в точката на прекъсване (в червения кръг ще се появи жълта стрелка вдясно - това е сигнал, че програмата е спряла).