プログラミング基礎a 第6回 C言語によるプログラミング入門 配列と文字列(その2) 2011.11.09 プログラミング基礎a 第6回 C言語によるプログラミング入門 配列と文字列(その2) 坂口 利裕
文字情報の扱い C言語における文字型 使い方 char (<character)の配列 プログラミング基礎a 2011.11.09 文字情報の扱い C言語における文字型 char (<character)の配列 (最大)10文字分の文字情報→10個の要素を持つchar型配列変数 ただし,実際には余分に1文字分必要。 使い方 読み取り:scanf(“%s”,name); /*配列名のみ*/ 表示:printf(“%s”,name) ; 四則演算:不可能 許される演算:比較・複写(代入)・連結 2011.11.09 プログラミング基礎a 坂口 利裕
文字データの扱い 内部的にはchar型の配列 char moji[4] ; の場合 プログラミング基礎a 2011.11.09 文字データの扱い 内部的にはchar型の配列 char moji[4] ; の場合 代入は「文字単位」で行う moji[0] = ’ s’ ; /* 両端はシングルクオート */ moji[1] = ’a’ ; moji[2] = ’k’ ; moji[3] = 0 ; /* 終端は0 : ‘0’ではない!*/ 文字列関数を使うと多少は楽 strcpy( moji, “sak”) ; 2011.11.09 プログラミング基礎a 坂口 利裕
文字関数・文字列関数 文字に使用できる主なもの 文字列に使用できる主なもの おまじない #include <ctype.h> を先頭に追記 文字種の判定 isupper(c)/islower(c) /isalpha(c)など 文字種の変換 toupper(c)/tolower(c)など 文字列に使用できる主なもの おまじない #include <string.h> を先頭に追記 文字列の長さ strlen(s) /* 有効な文字数 */ 文字列の複写 strcpy(target, source) ; /* 方向に注意 */ 2011.11.09 プログラミング基礎a
文字情報から数値情報への変換 関数を用いて数値化 おまじない #include <stdlib.h> を冒頭に追加 プログラミング基礎a 2011.11.09 文字情報から数値情報への変換 関数を用いて数値化 おまじない #include <stdlib.h> を冒頭に追加 float a ; int n ; の場合 a = atof(“123”) ; /* 実数に変換 */ n = atoi(“123”) ; /* 整数に変換 */ 2011.11.09 プログラミング基礎a 坂口 利裕
プログラム引数 プログラムを起動する際にオペレーティングシステムから渡される文字列の「配列」 main(int argc, char *argv[ ] ) { } 要素数が不定なので意図的に空っぽにしておく 渡された文字列の数 渡された文字列の配列 prog11 123 456 【データを追加してプログラムを起動する】 (OSが)分離して 文字データとして 設定して呼び出す argc → 3 argv[0] → “prog11.exe” (プログラム名) argv[1] → “123” argv[2] → “456” 2011.11.09 プログラミング基礎a
prog12.c の作成手順 先頭に #include <stdlib.h> を追加 基本形となる prog09d.c を複写 EmEditorで開いて「名前を付けて保存」 先頭に #include <stdlib.h> を追加 プログラム引数を定義 データ数をプログラム引数から求める データをプログラム引数から求める main( ) main( int argc, char *argv[ ] ) printf(“n ? ”) ; scanf(“%d”,&n) ; n = argc-1 ; for( i=0 ; i<n ; i=i+1 ) { printf(“x[%d]: “,d) ; scanf(“%g”,&x[i]) ; } for( i=0 ; i<n ; i=i+1 ) { x[i] = atof( argv[i+1] ) ; } 2011.11.09 プログラミング基礎a