Справочное руководство по C++
Шрифт:
switch (argc) {
case 1:
break;
case 2:
cin = *new istream(strlen(argv[1]),argv[1]);
break;
default:
error("too many arguments");
return 1;
}
// insert predefined names:
insert("pi")-›value = 3.1415926535897932385;
insert("e")-›value = 2.7182818284590452354;
while (1) {
get_token;
if (curr_tok == END) break;
if (curr_tok == PRINT) continue;
cout ‹‹ expr ‹‹ "\n";
}
return no_of_errors;
}
b3_2_6a.cxx
extern void strcpy(char *,char *);
extern void exit(int);
extern int strlen(char *);
char *save_string(char* p)
{
char* s = new char[strlen(p)+1];
strcpy(s,p);
return s;
}
int main (int argc, char* argv[])
{
if (argc ‹ 2) exit(1);
int size = strlen(argv[1])+1;
char* p = save_string (argv[1]);
delete[size] p;
}
b3_2_6b.cxx
#include ‹stream.hxx›
extern void exit(int);
void out_of_store
{
cout ‹‹ "operator new failed: out of store\n";
exit(1);
}
typedef void (*PF);
extern PF set_new_handler(PF);
main
{
set_new_handler(&out_of_store);
char *p = new char[100000000];
cout ‹‹ "done, p = " ‹‹ long(p) ‹‹ "\n";
}
b4_6_8.cxx
// This version of the program does not assume sizeof(int) == sizeof(char*)!
#include ‹stream.hxx›
#include ‹stdarg.hxx›
extern void exit(int);
void error (int …);
main(int argc, char* argv[])
{
switch (argc) {
case 1:
error(0,argv[0],(char*)0);
break;
case 2:
error(0,argv[0],argv[1],(char*)0);
break;
default:
error(1,"with",dec(argc-1),"arguments",(char*)0);
}
}
void error(int n …)
{
va_list ap;
va_start(ap,n);
for (;;) {
char *p = va_arg(ap,char*);
if (p == 0) break;
cerr ‹‹ p ‹‹ " ";
}
va_end(ap);
cerr ‹‹ "\n";
if (n) exit(n);
}
b4_6_9.cxx
#include ‹stream.hxx›
struct user {
char *name;
char* id;
int dept;
};
typedef user* Puser;
user heads[] = {
"Mcilroy M.D", "doug", 11271,
"Aho A.V.", "ava", 11272,
"Weinberger P.J.", "pjw", 11273,
"Schryer N.L.", "nls", 11274,
"Schryer N.L.", "nls", 11275,
"Kernighan B.W.", "bwk", 11276
};
typedef int (*CFT)(char*,char*);
void sort(char* base, unsigned n, int sz, CFT cmp)
{
for (int i=0; i‹n-1; i++)
for (int j=n-1; i‹j; j--) {
char* pj = base+j*sz;
char *pj1 = pj-sz;
if ((*cmp)(pj,pj1) ‹ 0)
// swap b[j] and b[j-1]
for (int k=0; k‹sz; k++) {
char temp = pj[k];
pj[k] = pj1[k];
pj1[k] = temp;
}
}
}
void print_id(Puser v, int n)
{
Поделиться:
Популярные книги
Ваше Сиятельство
1. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга XIV
14. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Подаренная чёрному дракону
Любовные романы:
любовно-фантастические романы
7.07
рейтинг книги
Я Гордый часть 2
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бальмануг. Невеста
5. Мир Десяти
Фантастика:
юмористическое фэнтези
5.00
рейтинг книги
Пограничная река. (Тетралогия)
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Сонный лекарь 6
6. Сонный лекарь
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Тринадцатый
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
6.80
рейтинг книги
Ночь со зверем
3. Оборотни-медведи
Любовные романы:
любовно-фантастические романы
5.25
рейтинг книги
Страж. Тетралогия
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Кодекс Охотника. Книга XIV
14. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том VIII
8. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон устанавливает правила
6. Закон сильного
Старинная литература:
прочая старинная литература
5.00