苦しんで覚えるC言語(苦C)は、プログラミング初心者を対象としたC言語入門サイト。C言語の基本機能が体系立てて解説されていて、C言語の取得に苦しんでいる人に非常に勧めのサイト。
苦しんで覚えるC言語
苦Cとは
苦しんで覚えるC言語(苦C)は、初心者を対象としたC言語入門サイト。C言語の基本機能が体系立てて解説されており、市販書籍と同等以上の完成度となっている。
市販書籍には仕組みの説明を省略して読みやすさをアピールする本が多い中、苦Cではくどい説明を行っており、挫折経験のある初心者に最適だという。
苦Cのファイルをダウンロードすることもできる。
C言語(しーげんご、C language)とは
C言語は、1972年にアメリカAT&T社ベル研究所のデニス・M・リッチー(Dennis M. Ritchie)氏とブライアン・W・カーニハン(Brian. W. Kernighan)氏によって開発された、コンピュータのソフトウェアをつくる際に使用されるプログラミング言語の一つで、B言語(びーげんご、B language)というプログラミング言語の後継として開発されたことからC言語と呼ばれている。特定のハードウェアに依存した部分が言語仕様から切り離されているため、移植性の高いプログラムを書くことができる。
苦しんで覚えるC言語 書籍版
苦しんで覚えるC言語
秀和システム 著者:MMGames
amazon.co.jpのカスタマーレビューを見る
powered by amalink
CodeIQ(コードアイキュー)は、リクルートが運営する自分の実力を知りたいITエンジニア向け実務スキル評価サービスで、企業の第一線で活躍するITエンジニアからの出題に解答し、評価フィードバックを受けることで、自分のスキルが、その企業から見てどの程度のレベルかを把握することができる。
新しい問題が出題されるのは、毎週月曜日で、週によって出題される言語、テーマ、出題企業、エンジニアは変わる。
CodeIQ|ITエンジニアのための実務スキル評価サービス
CodeIQ - CodeIQの使い方 | Facebook
CodeIQ Blog
CodeIQの問題に挑戦しよう!
数学文章作法 基礎編 (ちくま学芸文庫)
筑摩書房 著者:結城 浩
amazon.co.jpのカスタマーレビューを見る
powered by amalink
掲示板サイト「
CommentPP」で使用しているPHP+MySQLのスレッド型掲示板システム「CommentPP 1.1(オープンソースライセンス、GPLv2)」をリリースしました。
インストール手順については、書庫ファイルに含まれている、README.txtに記述しています。
■CommentPP 1.1 の特徴
・シンプルなユーザーインタフェース
シンプルなユーザーインタフェースで誰でも見ただけで操作方法を理解することができます。
・オープンソースライセンス
オープンソースライセンス(GPLv2)で配布しています。
・PHP、MySQLで開発
プログラミング言語はウェブアプリケーションの開発言語として広く利用されているPHP、 データベースは多くのWebアプリケーションのデータベースサーバーとして利用され、格安レンタルサーバーでも利用可能なMySQLを使用して開発しています。
・スパム対応
ブラックリストに登録したキーワードに該当する投稿はスパムとして拒否することができます。
・会員制での運用も可能
動作モードの設定で管理人が登録したユーザーのみが閲覧・投稿が可能な会員制での運用も可能です。会員制モードの場合ログインされていない場合はログイン画面が表示されます。
・アクセスランキング表示
今日のアクセスランキングや今月のアクセスランキングの表示にどのスレッドが人気があるかを簡単に把握できます。
・タグ機能
スレッドタイトルの[]で囲まれている部分は[]内の語句がそれぞれ一つのタグとして扱われます(一つのスレッドに複数のタグ指定が可能)。
■動作環境
・PHPのバージョン PHP5.3以上
・MySQL MySQL5
・Smarty(テンプレートエンジン)
CommentPP 1.1のダウンロード
10進数を2進数文字列に変換する関数は前に作成してますが、逆に「1101」「10110000」などの2進数文字列を10進数の整数値に変換するC言語用の関数がなかったので作成してみました。
#include <stdio.h>
#include <string.h>
int bin2dec(char *src);
int main(void)
{
char binstr1[] = "1101";
char binstr2[] = "10110000";
char binstr3[] = "1000000100000000";
int dec = 0;
dec = bin2dec(binstr1);
printf("%s:%d(0x%02.2X)\n", binstr1, dec, dec);
dec = bin2dec(binstr2);
printf("%s:%d(0x%02.2X)\n", binstr2, dec, dec);
dec = bin2dec(binstr3);
printf("%s:%d(0x%02.2X)\n", binstr3, dec, dec);
return 0;
}
int bin2dec(char *src)
{
int dec = 0;
for (;;) {
if (*src == '1') {
dec |= 1;
}
src++;
if (!*src) {
break;
}
dec <<= 1;
}
return dec;
}
実行結果
$ ./bin2dec
1101:13(0x0D)
10110000:176(0xB0)
1000000100000000:33024(0x8100)
C言語のstrncpy関数やmemcpy関数ではバイト単位の操作になるので、漢字、ひらがな、カタカナなどの全角文字を文字数で指定して部分
文字列を取り出すことができません。そこで半角英数も全角文字も1文字として部分文字...
C言語のstrncpy関数やmemcpy関数ではバイト単位の操作になるので、漢字、ひらがな、カタカナなどの全角文字を文字数で指定して部分文字列を取り出すことができません。
そこで半角英数も全角文字も1文字として部分文字列を取り出すことができる関数を作成します。
以下はそのコードです。[C言語]UTF-8でエンコードされた文字列の文字数を取得するコードと同様に、文字の1バイト目のビットの状態を調べることによってその文字が何バイト文字を判定しています。
#include <stdio.h>
#include <string.h>
char *substr_utf8(char *dest, char *src, int offset, int len);
int _bytesize(unsigned char code);
int main(void)
{
char *testStr = "ABCDEFGあいうえおアイウエオ愛夢佐々木";
char strBuf[256];
memset(strBuf, 0, sizeof strBuf);
printf("substr_utf8($testStr, 0, 5) = %s\n", substr_utf8(strBuf, testStr, 0, 5));
printf("substr_utf8($testStr, 3, 3) = %s\n", substr_utf8(strBuf, testStr, 3, 3));
printf("substr_utf8($testStr, 10, 4) = %s\n", substr_utf8(strBuf, testStr, 10, 4));
printf("substr_utf8($testStr, 13, 5) = %s\n", substr_utf8(strBuf, testStr, 13, 5));
return 0;
}
char *substr_utf8(char *dest, char *src, int offset, int len)
{
int srclen = strlen(src);
int pos = 0;
int count = 0;
char *cp = dest;
while (pos < srclen) {
unsigned char code;
code = *(src + pos);
int bytelen = _bytesize(code);
if (count >= offset && count < (offset + len)) {
memcpy(cp, (src + pos), bytelen);
cp += bytelen;
*cp = '\0';
}
pos += bytelen;
count++;
}
return dest;
}
int _bytesize(unsigned char code)
{
int size = 1;
int i;
if (0x80 & code) {
for (i = 2; i <= 8; i++) {
code <<= 1;
if (!(0x80 & code)) {
break;
}
size++;
}
}
return size;
}
実行結果
$ ./substr_utf8
substr_utf8($testStr, 0, 5) = ABCDE
substr_utf8($testStr, 3, 3) = DEF
substr_utf8($testStr, 10, 4) = えおアイ
substr_utf8($testStr, 13, 5) = イウエオ愛
C言語のstrlen関数では
文字列の長さとして返ってくる値はバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。Webアプリケーションのテキスト処理で...
C言語のstrlen関数では文字列の長さとして返ってくる値はバイト単位となるので、UTF-8でエンコードされている場合、漢字、ひらがな、カタカナなどは1文字で3となってしまいます。
Webアプリケーションのテキスト処理ではそれでは不都合な場合もことも多いので、半角英数も全角文字(漢字、ひらがな、カタカナなど) も1文字としてカウントする関数を作成することにします。
#include <stdio.h>
#include <string.h>
int strlen_utf8(char *cp);
int _bytesize(unsigned char code);
int main(void)
{
char *testAscii = "ABCDEFG";
char *testHira = "あいうえお";
char *testKata = "アイウエ";
char *testKanji = "愛々木";
char *testAll = "ABCDEFGあいうえおアイウエオ愛夢佐々木";
printf("strlen(testAscii) = %d\n", strlen(testAscii));
printf("strlen_utf8(testAscii) = %d\n", strlen_utf8(testAscii));
printf("strlen(testHira) = %d\n", strlen(testHira));
printf("strlen_utf8(testHira) = %d\n", strlen_utf8(testHira));
printf("strlen(testKata) = %d\n", strlen(testKata));
printf("strlen_utf8(testKata) = %d\n", strlen_utf8(testKata));
printf("strlen(testKanji) = %d\n", strlen(testKanji));
printf("strlen_utf8(testKanji) = %d\n", strlen_utf8(testKanji));
printf("strlen(testAll) = %d\n", strlen(testAll));
printf("strlen_utf8(testAll) = %d\n", strlen_utf8(testAll));
return 0;
}
int strlen_utf8(char *cp)
{
int textlen = strlen(cp);
int pos = 0;
int count = 0;
while (pos < textlen) {
unsigned char code;
code = *(cp + pos);
int bytelen = _bytesize(code);
pos += bytelen;
count++;
}
return count;
}
int _bytesize(unsigned char code)
{
int size = 1;
int i;
if (0x80 & code) {
for (i = 2; i <= 8; i++) {
code <<= 1;
if (!(0x80 & code)) {
break;
}
size++;
}
}
return size;
}
strlen_utf8関数では、1バイト目のASCIIコード値をパラメータとして_bytesize関数を呼び出して文字のバイト数を求め、1文字分の処理を行うたびに文字数をカウントアップしています。
また、_bytesize関数ではパラメータで渡されたコード値の場合の文字のバイト数を、コード値のビットの状態から判定して戻り値として返しています。
プロクラムの実行結果は以下のようになります。
kagahiro@kagahiro-PC ~/sample/c
$ ./strlen_utf8
strlen(testAscii) = 7
strlen_utf8(testAscii) = 7
strlen(testHira) = 15
strlen_utf8(testHira) = 5
strlen(testKata) = 12
strlen_utf8(testKata) = 4
strlen(testKanji) = 9
strlen_utf8(testKanji) = 3
strlen(testAll) = 52
strlen_utf8(testAll) = 22
TypeScript(タイプスクリプト)は、Webアプリケーションの開発に広く利用されている
JavaScriptに、クラス(Class)やモジュール(Module)となどといった大規模開発に役立つ
言語機能を追加したもので、コンパイルに...
TypeScript(タイプスクリプト)は、Webアプリケーションの開発に広く利用されているJavaScriptに、クラス(Class)やモジュール(Module)となどといった大規模開発に役立つ言語機能を追加したもので、コンパイルによるJavaScriptを生成する仕組みになっており、様々なブラウザや環境で動作する。マイクロソフトが開発し、オープンライセンス(Apache 2.0)で配布している。
TypeScript超入門
TypeScript クイックガイド - phyzkit.net
Welcome to TypeScript
TypeScript - Home
Microsoft、「TypeScript 0.9」をリリース。発表以来最大のアップデート
JavaScript ライブラリ実践活用〔厳選111〕 (Software Design plus)
技術評論社 著者:WINGSプロジェクト,山田祥寛,安西剛,高江賢,高野将
amazon.co.jpのカスタマーレビューを見る
powered by amalink
掲示板サイト「CommentPP」で使用しているスレッド型
掲示板システムを「CommentPP 1.0」を
オープンソースライセンス(
GPLv2)で
リリースしました。CommentPP(コメントピーピー)1.0は、PHPとMySQL(データベース)で...
掲示板サイト「
CommentPP」で使用しているスレッド型掲示板システムを「CommentPP 1.0」をオープンソースライセンス(GPLv2)でリリースしました。
CommentPP(コメントピーピー)1.0は、PHPとMySQL(データベース)で実装したオープンソースライセンス(GPLv2)のシンプルな日本語対応スレッド型掲示板システムで、その主な特徴は以下の通りです。
■CommentPP 1.0 の特徴
・シンプルなユーザーインタフェース
シンプルなユーザーインタフェースで誰でも見ただけで操作方法を理解することができます。
・オープンソースライセンス
オープンソースライセンス(GPLv2)で配布しています。
・PHP、MySQLで開発
プログラミング言語はウェブアプリケーションの開発言語として広く利用されているPHP、
データベースは多くのWebアプリケーションのデータベースサーバーとして利用され、格安レンタルサーバーでも利用可能なMySQLを使用して開発しています。
・スパム対応
ブラックリストに登録したキーワードに該当する投稿はスパムとして拒否することができます。
・会員制での運用も可能
動作モードの設定で管理人が登録したユーザーのみが閲覧・投稿が可能な会員制での運用も可能です。
会員制モードの場合ログインされていない場合はログイン画面が表示されます。
■動作環境
・PHPのバージョン PHP5.3以上
・MySQL MySQL5
・Smarty(テンプレートエンジン)
CommentPP 1.0のダウンロード
1バイト(8bit)の10進数を2進数の文字列に変換するコードの
C言語版です。
C言語では、PerlやPHPなどのように2進文字列に変換してくれる便利な関数は関数はないので、ビット演算子を使ってビットのオン・オフを判定して...
1バイト(8bit)の10進数を2進数の文字列に変換するコードのC言語版です。
C言語では、PerlやPHPなどのように2進文字列に変換してくれる便利な関数は関数はないので、ビット演算子を使ってビットのオン・オフを判定して、2進文字列を作成していくしかありません。
#include <stdio.h>
#include <string.h>
void dec2bin(char src, char *dest);
const int buf_size = 9;
int main(void)
{
char buf[buf_size];
char str1[] = "あいうえお";
char *cp;
int num = 1;
for (cp = str1; *cp; cp++) {
memset(buf, '\0', sizeof(buf));
dec2bin(*cp, buf);
printf("%d:%s (0x%02.2X)\n", num, buf, 0x000000ff & *cp);
num++;
}
return 0;
}
void dec2bin(char src, char *dest)
{
const int bit_size = 8;
int i;
for (i = 0; i < bit_size; i++) {
dest[i] = (0x80 & src) ? '1' : '0';
src <<= 1;
}
}
解きながら学ぶC言語
ソフトバンククリエイティブ 著者:柴田 望洋,肘井 真一,高木 宏典,赤尾 浩
amazon.co.jpのカスタマーレビューを見る
powered by amalink
|< 先頭へ < 前へ 1 2 3 4 5 次へ >
アクセスランキング
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (87 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (13 PV)
- Google News (グーグルニュース)日本版 (9 PV)
- ガンマトレード(ガンマプレイ)とは #FX #用語解説 #オプション取引 (7 PV)
- [FX]高値更新・安値更新でエントリー、MT4向け無料スキャルピングEA「1Scalper」#システムトレード (6 PV)
- 「xVideoServiceThief」無料の動画ダウンロードツール (5 PV)
- 2chまとめサイト - 痛いニュース(ノ∀`) (4 PV)
- 完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」 (3 PV)
- [将棋]ユーチューバーのクロノさんが将棋ウォーズ運営からアカウント停止の警告を受ける #ソフト指し #複垢 #アカBAN (3 PV)
- MySQLのDELETE文でLIMIT句を使用して上位3件のレコードを削除する (3 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (1429 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (218 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (206 PV)
- MT4向けオープンソースナンピンマーチンEA「Automaton」 (127 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (116 PV)
- MT4向け1ポジアノマリーEA「DAY TRADING」オープンソースライセンス(GPL3)で公開 #ドル円 (112 PV)
- [FX]高値更新・安値更新でエントリー、MT4向け無料スキャルピングEA「1Scalper」#システムトレード (109 PV)
- 完全無料のMT5用ナンピンEA「Nanpin K(ナンピンケイ) MT5」 (105 PV)
- 完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」 (94 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (84 PV)
アクセス統計
ディレクトリ
関連サイト