I ♥ WordPress

[時間割:C言語]『はじめてのC言語完全入門』その16
2009/01/24 00:40 posted by kunkichi

ここんところ疲れが出たみたいで、本読みつつ知らないうちに落ちてるという毎日で少しアップをサボり気味、、、また気分入れ替えて出直しです。ということで金曜日は『C言語』。今回は文字列の応用編。

はじめてのC言語 完全入門 (標準プログラマーズライブラリ)
塚越 一雄
技術評論社
売り上げランキング: 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
  • strings.h ・・・ 文字列操作#include <strings.h>
    • 文字列のコピー
      • そのままコピーchar str1[] = "abcdefghijklmnopqrstuvwxyz";
        char str2[256];
        strcpy(str2,str1);
        printf("%s\n",str2);
        結果:abcdefghijklmnopqrstuvwxyzstrcpyの引数はコピー先、コピー元の順なので注意。
      • コピーする文字数を指定してコピーchar str1[] = "abcdefghijklmnopqrstuvwxyz";
        char str2[256];
        strncpy(str2,str1,10);
        str2[10] = '\0';
        printf("%s\n",str2);<code>結果:<code>abcdefghij
        strncpyの場合、コピー元文字数とコピーする文字数に注意。
        「コピー元文字数<コピーする文字数」の場合は上記のように最後にNULL文字を付与してやる必要がある。
        逆に「コピー元文字数>コピーする文字数」の場合は残りの文字をNULL文字が埋めるので気にしなくてよい。
    • 文字の連結char str1[] = "abcdefghijklmnopqrstuvwxyz";
      char str2[] = "1234567890";
      strcat(str2,str1);
      printf("%s\n",str2);
      結果:1234567890abcdefghijklmnopqrstuvwxyzstrcatは第1引数の後ろに第2引数をくっつける。
      連結先は連結した文字列を含める十分なサイズを持ってないと行けないとあるけど、上のように書くと特に意識しなくても連結されるんだけどなぁ、、、

おっと、なんかまとめるのに時間がかかったなぁ。あんまりページ進んでないやw。
まあ少しでも毎日続けれるように、無理せず今日はここまで。

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

トラックバックURL





このページの先頭へ