[時間割:C言語]『はじめてのC言語完全入門』その16
2009/01/24 00:40 posted by kunkichi
ここんところ疲れが出たみたいで、本読みつつ知らないうちに落ちてるという毎日で少しアップをサボり気味、、、また気分入れ替えて出直しです。ということで金曜日は『C言語』。今回は文字列の応用編。
はじめてのC言語 完全入門 (標準プログラマーズライブラリ)
posted with amazlet at 08.08.19
塚越 一雄
技術評論社
売り上げランキング: 420963
技術評論社
売り上げランキング: 420963
- stdlib.h ・・・ 数値への変換
#include <stdlib.h>- 文字列をintに変換
int i = atoi("12345");結果:
i += 5;
printf("%d\n",i);
12350 - 文字列をlongに変換
long l = atol("1000000000");結果:
l += 1000000000;
printf("%ld\n",l);2000000000 - 文字列をflotに変換
double f = atof("3.141");結果:
f += 0.245;
printf("%f\n",f);3.386000atofはfloat型でなくdouble型に変換するので注意 - 数値と文字が両方含まれる場合
- 文字は変換できないのでその手前までを変換しようとする。
int i = atoi("12345abcde");結果:
printf("%i\n",i);12345最初から文字があって数字が続く場合int i = atoi("12345abcde");結果:
printf("%i\n",i);0 - 先頭の空白文字は無視される
int i = atoi(" 12345");結果:
printf("%i\n",i);12345
- 文字は変換できないのでその手前までを変換しようとする。
- 文字列をintに変換
- strings.h ・・・ 文字列操作
#include <strings.h>- 文字列のコピー
- そのままコピー
char str1[] = "abcdefghijklmnopqrstuvwxyz";結果:
char str2[256];
strcpy(str2,str1);
printf("%s\n",str2);abcdefghijklmnopqrstuvwxyzstrcpyの引数はコピー先、コピー元の順なので注意。 - コピーする文字数を指定してコピー
char str1[] = "abcdefghijklmnopqrstuvwxyz";strncpyの場合、コピー元文字数とコピーする文字数に注意。
char str2[256];
strncpy(str2,str1,10);
str2[10] = '\0';
printf("%s\n",str2);<code>結果:<code>abcdefghij
「コピー元文字数<コピーする文字数」の場合は上記のように最後にNULL文字を付与してやる必要がある。
逆に「コピー元文字数>コピーする文字数」の場合は残りの文字をNULL文字が埋めるので気にしなくてよい。
- そのままコピー
- 文字の連結
char str1[] = "abcdefghijklmnopqrstuvwxyz";結果:
char str2[] = "1234567890";
strcat(str2,str1);
printf("%s\n",str2);1234567890abcdefghijklmnopqrstuvwxyzstrcatは第1引数の後ろに第2引数をくっつける。
連結先は連結した文字列を含める十分なサイズを持ってないと行けないとあるけど、上のように書くと特に意識しなくても連結されるんだけどなぁ、、、
- 文字列のコピー
おっと、なんかまとめるのに時間がかかったなぁ。あんまりページ進んでないやw。
まあ少しでも毎日続けれるように、無理せず今日はここまで。






コメント&トラックバック
トラックバックURL: