0. volatileで最適化を抑制する
0. 文字配列初期化の心得
- callocは、0x00で初期化してくれる
- mallocは、0x00で初期化しない
- char str[n];は、0x00で初期化しない
- 2、3で定義した文字配列にstrncpyで文字配列をコピーする場合は、事前にmemsetなどで初期化すべき。コピー元の文字配列の長さ以降の領域に予期しない値が入っている場合がある
- 文字配列に値を設定する関数の挙動(終端文字をセットしてくれるか)は必ず確認
0. sprintfの注意点
以下のように終端文字を設定すると(null)が設定される
ex.
char exten[4] = {0};
sprintf(exten,"%s",'\0');
printf("%s\n", exten);
出力結果 = (null)
ブランクを設定したい場合は、以下のようにする
sprintf(exten,"%s","");
0. フォーマット指定子一覧
0. 関数を調べる
0. ローカル変数とメモリスタックの注意点
0. IPヘッダ構造体について u_int8_t = u_char
0. 苦しんで覚えるC言語
2. strncpy(文字列をn文字コピー)
3. strcpy(文字列のコピー)
※strncpy(strcpyとの違い)
4. 文字列の置換~strchg関数を作る
5. 「警告: 初期化子のまわりのブレースを欠いています」対応
6. strcmp(文字列比較)
7. strtok(文字列strの中をデリミッタ文字で区切って、呼び出す毎に区切った文字列のアドレスを返す)
8. inotify
- inotify を使ってファイルシステムのアクティビティーを監視する
- inotify API
- lsyncd(inotify)で上限ファイル数を超えた時の対処策
- inotifyの上限値設定変更
- inotify で Linux ファイルシステムのイベントを監視する
- inotifytools/inotifytools.h File Reference
10. 文字列の終端 null文字('\0')に関すること
11. scanf関数で文字列を得るにはどうしたらいいのか、文字列を扱う時の危険性を考慮する
12. strcat(文字列の連結)
13. メモリの管理について
mallocもしくはnewで動的にメモリを確保した場合は、以下の関数で動的にメモリを開放する必要がある。
malloc - free
new - delete
※外部変数はプログラム終了後、関数で定義した内部変数は関数終了後にOSが自動的にメモリを開放する。また、関数についてはstack領域でメモリ確保し、mallocで確保したメモリ領域とは異なる。
参考:変数とメモリ領域の対応
14. ポインタ
15. static関数
16. 関数から配列の先頭アドレスを返す
17. POSIX正規表現 regex.h
18. if文(≠0:真、=0:偽)
19. GRegex(GLibの正規表現)の一般キャラクタタイプが使えない(警告: 不明なエスケープシーケンス '\d')
20. 大文字小文字
21.
22. プログラムの適切な終了方法を選択する
23. コマンドを実行する
24. プログラムで使う静的ライブラリ、共有ライブラリ
25. 文字列を整数型に変換する
26. statvfsでファイルシステム情報を取得
27. 標準入出力関数(1)
28. 配列の要素数を取得する
29. 配列
30. 配列やメモリ領域の内容をコピーする
31. 配列を自由自在に作る(配列のサイズを動的に変更)
32. sprintf(書式指定変換した出力を文字列に格納)strcpyとの使い分け
33. boolean型
34. NULLポインタ
35. strncmpとstrcmp
36. system関数
37. libcurlでhttp接続
- 本家サイト
- cURL と libcurl を使ってインターネット経由でやりとりする
- C言語のlibcurl を使ってみた。でもgccのライブラリ・パスがよくわからなかった。
- ftpuploadサンプル
39. C開発環境開発 for Windows
- プログラミング速成コース 開発環境の準備-Windows編install_win.html
- Windows 7 で C/C++ の開発・実行環境を整える!
- cygwin + Eclipse + CDT 環境構築 (Windows)
- データを保持する
- CURLOPT_HEADERFUNCTION explained
- Setup Cygwin toolchain in Eclipse CDT(cygcheckコマンドのサンプル)
- 標準ライブラリにパスを通す
- [Eclipse]cppのSymbol ‘NULL’ could not be resolvedがクリーン&ビルドでも解決しない時に試したいこと
41. シグナル処理関数(シグナルハンドラ)を登録する
42. ファイル操作
43. C言語システムコール-gethostname
44. segfault の error_code の意味
45. C言語 popen()でコマンドを実行して出力を読み込む
46. 色々なデータ型の最大値、最小値
47. ファイルの所有者を変更する chown関数
48. システムコール-mkdir
49. Linuxでプロセスのデーモン化
50. マルチスレッド
- スレッドと排他処理とデッドロック(pthread,mutex)
- セマフォの操作を行なう
- pthread_cancel(3)を使ってみた
- マルチスレッドについて(マルチプロセスとの対比 fork)
- 子プロセスを生成する(fork)
52. voidポインタ
53. uname関数でシステム情報を取得する
54. gethostnameのヘルプ・マニュアル
55. バイトオーダー(htons() と htonl() を その逆は ntohs() と ntohl())
56. バイトオーダ - ビッグエンディアン/リトルエディアン
57. プログラムファイル分割
58. 文字列処理関数 綺麗にまとまってて分かりやすい
59. C言語で2次元配列を動的に割り当てる4つの方法 めっちゃ参考にしました
60. 構造体配列
61. 関数内でmallocするときの注意
62. mallocに対するcallocのメリットは何ですか。
63. C言語でMySQLにアクセスする
※MYSQL_ROWは、文字型のポインタの配列のため、int型の値を取得した場合は、atoiでの変換が必要
64. 文字型配列の初期化とクリア
65. MD5ハッシュによるファイルチェック
66. fread
67. snprintf
68. C言語標準ビルトイン型で関数オーバーロードしてはいけない
69. poll, ppoll - ファイルディスクリプターにおけるイベントを待つ
70. gcc の警告オプション -Wall と -W
71. Interprocess Communication (IPC)
72. バッファオーバーラン ~その1・こうして起こる~
73. gdb
- Debugging with GDB
- gdbの主要コマンド
- 最適化オプションのまとめ
- スタック・フレーム
- gcc+gdbによるプログラムのデバッグ 第1回 ステップ実行、変数の操作、ブレークポイント
- gcc+gdbによるプログラムのデバッグ 第2回 変数の監視、バックトレース、その他のコマンド
- gcc+gdbによるプログラムのデバッグ 第3回 gdbの便利な機能、デバッグの例
- 既に起動しているプロセスをgdbで制御する
- forkするプログラムのデバッグ
0 件のコメント:
コメントを投稿