プログラミング基礎B 文字列の扱い.

Slides:



Advertisements
Similar presentations
第 2 章 数値の入力と変数 scanf と変数をやります 第 2 章 数値の入力と変数 1. 以下のプログラムを実行してみよう  C 言語では文の最後に「 ; 」(セミコロン)が付きます 第 2 章 数値の入力と変数 2 #include int main() { int x; x = 3; printf("x.
Advertisements

1 例題 ex3b ( 配列 ) 科学科プログラミング. 2 例題 : ex3b  以下の 3 つについて例題を進める ステップ 1 :配列 ステップ 2 :最小と最大 ステップ 3 :文字型の配列.
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
復習 配列変数の要素 5は配列の要素数 これらの変数をそれぞれ配列の要素と呼ぶ この数字を配列の添え字,またはインデックスと呼ぶ
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
第2章 数値の入力と変数 scanfと変数をやります.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
基礎プログラミングおよび演習 第9回
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
文字配列の課題1 解説 /* a */ #include <stdio.h> main( ) { int i;
C言語講座 第4回 ポインタ.
第8回 プログラミングⅡ 第8回
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
第10章 char 文字列; 文字列を入力させるよ!.
C言語講座 第3回 ポインタ、配列.
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
プログラミング応用 printfと変数.
プログラミング論 II 2008年10月30日 文字列
プログラミング 4 記憶の割り付け.
プログラミング序論 2. n人のインディアン.
第10章 これはかなり大変な事項!! ~ポインタ~
プログラミング入門2 第8回 ポインタ 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
今までの練習問題の復習.
前回の練習問題.
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
知能情報工学演習I 第9回(後半第3回) 課題の回答
第13章 文字の取り扱い方 13.1 文字と文字型関数 13.2 文字列 13.3 文字型配列への文字列の代入
第7回 プログラミングⅡ 第7回
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
知能情報工学演習I 第8回( C言語第2回) 課題の回答
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
高度プログラミング演習 (05).
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング入門2 第9回 ポインタ 情報工学科 篠埜 功.
高度プログラミング演習 (09).
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
ネットワーク・プログラミング Cプログラミングの基礎.
情報処理Ⅱ 第7回 2004年11月16日(火).
標準入出力、変数、演算子、エスケープシーケンス
知能情報工学演習I 第8回(後半第2回) 課題の回答
プログラミング論 文字列
プログラミング 4 文字列.
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
情報処理Ⅱ 2005年11月25日(金).
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング入門2 第5回 配列 変数宣言、初期化について
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
知能情報工学演習I 第9回(後半第3回) 課題の回答
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
変数と代入・読込と表示 第2回[平成15年4月24日(木)]:PN03ー02.ppt 今日の内容 1 プログラムの構造(復習)
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

プログラミング基礎B 文字列の扱い

文字コード(ASCIIコード) 数値と文字が対応している

char型変数(p.92) 文字を扱うために用いられる (ただし半角文字だけ) char型は1バイトの大きさの変数 /* example-7.1 */ #include <stdio.h> int main(void) { char m; m = 65; printf("%d\n",m); printf("%c\n",m); m = 'B'; return 0; } char型は1バイトの大きさの変数 28=256種類の数値しか扱えない int型は4バイトの大きさの変数 232=4294967296種類の数値を扱える

文字の表示(p.94) キャラクタコードに 対応した文字を表示 /* example-7.1 */ #include <stdio.h> int main(void) { char m; m = 65; printf("%d\n",m); printf("%c\n",m); m = 'B'; return 0; } 表示結果 65 A キャラクタコードに 対応した文字を表示

「'」による文字コードの表現 「’」(シングルクォーテーション)で囲まれた文字は キャラクタコードに 対応した数値が得られる /* example-7.1 */ #include <stdio.h> int main(void) { char m; m = 65; printf("%d\n",m); printf("%c\n",m); m = 'B'; return 0; } mには66という数値が入る 66 B 「’」(シングルクォーテーション)で囲まれた文字は キャラクタコードに 対応した数値が得られる m=66と同じ意味になる

文字列 (p96) ー 文字配列 char型の大きさは1バイトなので char型の配列は メモリ上で連続した6バイトに配置される /* example-7.2 */ #include <stdio.h> int main(void) { char st[6]; st[0]='P'; st[1]='a'; st[2]='n'; st[3]='d'; st[4]='a'; st[5]='\0'; printf("%s\n",st); return 0; } XXXX st[0] XXXX+1 st[1] XXXX+2 st[2] XXXX+3 st[3] XXXX+4 st[4] XXXX+5 st[5]

文字列 ー 文字配列 st[0]='P'とすると, Pの文字コード80が 0番目の要素に入る /* example-7.2 */ 文字列 ー 文字配列 st[0]='P'とすると, Pの文字コード80が 0番目の要素に入る /* example-7.2 */ #include <stdio.h> int main(void) { char st[6]; st[0]='P'; st[1]='a'; st[2]='n'; st[3]='d'; st[4]='a'; st[5]='\0'; printf("%s\n",st); return 0; } XXXX 80 st[0] XXXX+1 st[1] XXXX+2 st[2] XXXX+3 st[3] XXXX+4 st[4] XXXX+5 st[5]

文字列 ー ヌルコード /* example-7.2 */ #include <stdio.h> int main(void) 文字列 ー ヌルコード /* example-7.2 */ #include <stdio.h> int main(void) { char st[6]; st[0]='P'; st[1]='a'; st[2]='n'; st[3]='d'; st[4]='a'; st[5]='\0'; printf("%s\n",st); return 0; } XXXX 80 st[0] XXXX+1 97 st[1] XXXX+2 110 st[2] XXXX+3 100 st[3] XXXX+4 97 st[4] XXXX+5 st[5] '\0'はヌルコードと呼ばれる(p.97) 数値としては0 文字列の最後を意味する記号

文字列 ー 文字列の表示 /* example-7.2 */ #include <stdio.h> int main(void) 文字列 ー 文字列の表示 /* example-7.2 */ #include <stdio.h> int main(void) { char st[6]; st[0]='P'; st[1]='a'; st[2]='n'; st[3]='d'; st[4]='a'; st[5]='\0'; printf("%s\n",st); return 0; } “%s”で文字列の入っている配列の内容を表示できる(p.97) 引数は配列名を与える(配列の先頭アドレス)

実習 例題7.1を打ち込み実行せよ 例題7.2を打ち込んで実行せよ 数値,文字を変更して動作を確認せよ printf("%c\n",65)と数値を直に指定したらどうなるか確認せよ 例題7.2を打ち込んで実行せよ 例題7.3のように文字列の途中に'\n'を入れるとどうなるか確認せよ

文字列の初期値設定(p.99) /* example-7.4 */ #include<stdio.h> int main(void) { char st1[]="Giant Panda"; char st2[]="Lesser Panda"; printf("%s and %s\n",st1,st2); return 0; } 「"」(ダブルクォーテーション)で囲まれた文字列によって配列の初期化が可能 "\0"は自動的に挿入される st[]とすることで,11+1文字の大きさの配列st1が用意される。 char st[12]="Giant Panda" としても問題ない

scanfによる文字列の入力 空の文字列配列を用意する (大きさは余裕を持たせること) /* example-7.5 */ #include <stdio.h> int main(void) { char st[80]; printf("文字列を入力してください"); scanf("%s", st); printf("%s\n", st); return 0; } 空の文字列配列を用意する (大きさは余裕を持たせること)

scanfによる文字列の入力 scanfによって文字列を 配列stへ入力できる 変換指定子は"%s" 引数は配列名のみ /* example-7.5 */ #include <stdio.h> int main(void) { char st[80]; printf("文字列を入力してください"); scanf("%s", st); printf("%s\n", st); return 0; } scanfによって文字列を 配列stへ入力できる 変換指定子は"%s" 引数は配列名のみ

入力結果(問題がない場合) scanfの結果 キーボードから入力した "Lion"が配列stに 読み込まれている /* example-7.5 */ #include <stdio.h> int main(void) { char st[80]; printf("文字列を入力してください"); scanf("%s", st); printf("%s\n", st); return 0; } scanfの結果 キーボードから入力した "Lion"が配列stに 読み込まれている ※最後の'\n'は自動的に入る 実行結果 文字列を入力してください Lion Lion

入力結果(問題有り) "The Lion"の中の"The"だけ読み込まれている 空白文字も文字列の終わりと 見なされる /* example-7.5 */ #include <stdio.h> int main(void) { char st[80]; printf("文字列を入力してください"); scanf("%s", st); printf("%s\n", st); return 0; } "The Lion"の中の"The"だけ読み込まれている 空白文字も文字列の終わりと 見なされる 実行結果 文字列を入力してください The Lion The

実習 例題7.4を実行せよ 以下の内容をreturn 0;の前に追加して配列の内容を確認せよ(変数iは宣言してください) 例題7.5を実行せよ 上と同じような命令文を挿入して配列の内容を確認せよ。 for (i = 0; i < 12; i++) { printf("%c %d\n",st1[i], st1[i]); }

練習問題 Rドライブに入っている演習問題をやってください

puts,gets関数 puts関数 文字列を表示する関数 puts("文字列"); puts(配列名); で画面に表示される /* example-7.7*/ #include <stdio.h> int main(void) { char st[80]; puts("文字列を入れてください"); gets(st); puts(st); return 0; } puts関数  文字列を表示する関数 puts("文字列"); puts(配列名); で画面に表示される 改行が自動的に挿入される 文字列を入れてください This is a pen.

puts,gets関数 gets関数 文字列を配列へ入力する gets(配列名); scanfと似ているが 空白文字も入力できる /* example-7.7*/ #include <stdio.h> int main(void) { char st[80]; puts("文字列を入れてください"); gets(st); puts(st); return 0; } gets関数  文字列を配列へ入力する gets(配列名); scanfと似ているが 空白文字も入力できる 文字列を入れてください This is a pen.