開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- C++ (プログラミング言語)
- g++(コンパイラ)
C++実践プログラミング (スティーブ オウアルライン (著)、Steve Oualline (原著)、Steve Oualline(原著)、望月 康司(翻訳)、クイープ(翻訳) 、オライリー・ジャパン)のⅢ部(高度な型とクラス)の15章(シンプルなポインタ)、15.7(プログラミング実習)、実習 15-2を解いてみる。
その他参考書籍
- C++プログラミング入門 (グレゴリー サティア (著)、ダウグ ブラウン (著)、Gregory Satir (原著)、Doug Brown (原著)、望月 康司 (翻訳)、谷口 功 (翻訳)、オライリージャパン)
実習 15-2
コード(BBEdit, Emacs)
sample267_2.cpp
#include <iostream> char *first_char(char s[]) { char *c_ptr; c_ptr = s; while (*c_ptr != '\0' && *c_ptr == ' ') ++c_ptr; if (*c_ptr == '\0') { std::cerr << "Error: Unable to find whitespace in '" << s << "'\n"; exit (8); } return c_ptr; } int main(int argc, char *argv[]) { char line[80]; char *c_ptr; std::cout << "Enter string\n"; std::cin.getline(line, sizeof(line)); std::cout << '\'' << line << '\'' << '\n'; c_ptr = first_char(line); long a = reinterpret_cast<long>(line); long b = reinterpret_cast<long>(c_ptr); std::cout << std::hex; std::cout << a << '\n'; std::cout << c_ptr[0] << ": " << b << '\n'; std::cout << std::dec; std::cout << a << '\n'; std::cout << b << '\n'; return (0); }
Makefile
# # FSFのg++コンパイラ用のMakefile # CC=g++ CFLAGS=-g -Wall all: sample267_2 sample267_2: sample267_2.cpp ${CC} ${CFLAGS} -o sample267_2 sample267_2.cpp clean: rm sample267_2
入出力結果(Terminal)
$ make && ./sample267_2 g++ -g -Wall -o sample267_2 sample267_2.cppEnter string '' Error: Unable to find whitespace in '' $ ./sample267_2 Enter string ' ' Error: Unable to find whitespace in ' ' $ ./sample267_2 Enter string ' ' Error: Unable to find whitespace in ' ' $ ./sample267_2 Enter string c 'c' 7fff5eadab10 c: 7fff5eadab10 140734781827856 140734781827856 $ ./sample267_2 Enter string c 'c ' 7fff59579b10 c: 7fff59579b10 140734692301584 140734692301584 $ ./sample267_2 Enter string c ' c' 7fff5dabdb10 c: 7fff5dabdb11 140734764931856 140734764931857 $ ./sample267_2 Enter string Hello World! 'Hello World!' 7fff5224eb10 H: 7fff5224eb10 140734571539216 140734571539216 $ Hello World! bash: Hello: command not found $ ./sample267_2 Enter string Hello World! ' Hello World!' 7fff4ffffb10 H: 7fff4ffffb15 140734535564048 140734535564053 $
0 コメント:
コメントを投稿